Youtube в приложении Webkit/Python/GTK

Я пытаюсь сделать приложение 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) 64-битная виртуальная машина OpenJDK (сборка 20.0-b12, смешанный режим) ** Сообщение: консольное сообщение: undefined @0: TypeError: 'undefined' не является объектом

Страница загружается, но я не могу воспроизвести мое видео:( (окно видео полностью черное и не имеет кнопки воспроизведения, ничего)

Пользовательский интерфейс выполнен в Glade, а файл XML, созданный Glade, 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>

Не могли бы вы мне помочь? Спасибо!

3 ответа

Решение

Я нашел решение, которое работает для меня. я использовал

import gtk 
import webkit

вместо:

from gi.repository import Gtk, WebKit

Я нашел решение вашей проблемы. Сообщение об ошибке от OpenJDK не имеет значения, оно исходит от плагина браузера Java и не влияет на то, что вы пытаетесь сделать.

Гораздо важнее, вы делаете простую ошибку. Вы просто не показываете свое окно! Добавить

self.main_window.show_all()

до звонка Gtk.main() и ваше окно отображается, начинается воспроизведение видео с YouTube, и все работает правильно.

Я думаю, что это старый вопрос сейчас, но оба ответа неверны.

Код, представленный в вопросе, на самом деле работает и хорошо отображает видео. Он показывает очень маленькое окно, поэтому вам придется развернуть его, чтобы увидеть.

Другие вопросы по тегам