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, и все работает правильно.
Я думаю, что это старый вопрос сейчас, но оба ответа неверны.
Код, представленный в вопросе, на самом деле работает и хорошо отображает видео. Он показывает очень маленькое окно, поэтому вам придется развернуть его, чтобы увидеть.