1

我正在尝试做一个 python(2.7)/GTK+ 应用程序,并且我有一个包含 WebKit WebView 的窗口。

from gi.repository import Gtk, WebKit

class MainWindow:
    def __init__( self ):
        self.builder = Gtk.Builder()
        self.builder.add_from_file("youtubeWindow.ui")
        self.main_window = self.builder.get_object("main_window")
        self.scrl_window = self.builder.get_object("scrl_window")
        self.webview = WebKit.WebView()
        self.scrl_window.add(self.webview)
        self.webview.show()  
        self.webview.open("http://youtu.be/o-akcEzQ6Y8")  
        self.main_window.show_all()      
        Gtk.main()     


tube_window = MainWindow() 

当我运行我的应用程序时,出现以下错误:

错误:无效的浏览器函数表。某些功能可能会受到限制。java version "1.6.0_24" OpenJDK Runtime Environment (IcedTea6 1.11.3) (6b24-1.11.3-1ubuntu0.12.04.1) OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode) ** 消息:控制台消息: undefined @0: TypeError: 'undefined' is not an object

页面加载,但我无法播放我的视频 :( (视频框全黑,没有任何播放按钮,什么都没有)

用户界面是在 Glade 中制作的,Glade 生成的 XML 文件 youtubeWindow.ui 是:

<?xml version="1.0" encoding="UTF-8"?>
<interface>
  <!-- interface-requires gtk+ 3.0 -->
  <object class="GtkWindow" id="main_window">
    <property name="can_focus">False</property>
    <property name="type_hint">menu</property>
    <child>
      <object class="GtkScrolledWindow" id="scrl_window">
        <property name="visible">True</property>
        <property name="can_focus">True</property>
        <property name="shadow_type">in</property>
        <child>
          <placeholder/>
        </child>
      </object>
    </child>
  </object>
</interface>

你能帮我么?谢谢!

4

3 回答 3

2

我找到了解决您问题的方法。来自 OpenJDK 的错误消息无关紧要,它来自 Java 浏览器插件,对您尝试执行的操作没有影响。

更重要的是,你犯了一个简单的错误。你根本不显示你的窗口!添加一个

self.main_window.show_all()

在调用Gtk.main()和显示您的窗口之前,Youtube 视频播放开始并且一切正常。

于 2012-07-23T06:53:09.380 回答
1

我想这是一个老问题了,但两个答案都不正确。

问题中提交的代码实际运行并显示视频正常。它显示了一个非常小的窗口,因此您必须将其最大化才能看到它。

于 2016-05-20T04:26:34.323 回答
-2

我找到了一个适合我的解决方案。我用了

import gtk 
import webkit

代替:

from gi.repository import Gtk, WebKit
于 2012-08-07T20:20:09.713 回答