【问题标题】:Youtube in Webkit/Python/GTK appWebkit/Python/GTK 应用程序中的 Youtube
【发布时间】:2012-07-20 23:20:48
【问题描述】:

我正在尝试做一个 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版本“1.6.0_24”OpenJDK运行环境 (IcedTea6 1.11.3) (6b24-1.11.3-1ubuntu0.12.04.1) OpenJDK 64 位服务器 虚拟机(构建 20.0-b12,混合模式) ** 消息:控制台消息:未定义 @0:TypeError:“未定义”不是对象

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

用户界面是在 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>

你能帮帮我吗? 谢谢!

【问题讨论】:

  • 从您的代码访问 youtube 视频链接时显示:“验证期间发生错误。对此感到抱歉。”
  • 我不明白为什么您的错误消息将 OpenJDK 命名为源。您使用的是哪个 Python 实现? Cpython / Jython?
  • Ubuntu 12.04 上的 CPython 2.7。我认为 Java 错误与 google 的 youtube 播放器有关,也许我必须导入一些额外的东西来启用 WebKit 对 Java 的支持。 Youtube 在我的 Opera、Firefox 和 Chrome 系统上运行,所以我的代码中一定遗漏了一些东西。也许在 WebKit 中启用 Java 的东西
  • 这听起来更奇怪。现在 Youtube 上没有 Java。如果你提供了你的 youtubeWindow.ui(或极简主义等价物),我可以试试看。

标签: python webkit youtube gtk python-2.7


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    import gtk 
    import webkit
    

    代替:

    from gi.repository import Gtk, WebKit
    

    【讨论】:

    • 不要这样做。您现在加载的是 GTK 2 而不是 GTK 3,这会让您头疼,因为 GTK 2 将不受支持和维护。
    【解决方案3】:

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

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

    self.main_window.show_all()
    

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

    【讨论】:

    • 是的,谢谢,抱歉。我发布的代码是我的应用程序代码的简化版本,显然我写错了,谢谢你的提示,我会编辑我的帖子。但是在加载 youtube 页面时我仍然遇到相同的 java 错误
    • 就我而言,一切正常。我猜你只需要忍受一些植根于 webkit 的错误输出。
    猜你喜欢
    • 2011-06-03
    • 1970-01-01
    • 2011-05-18
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    • 1970-01-01
    相关资源
    最近更新 更多