Получение gtk.gdk.window.handle в Windows - PullRequest
2 голосов
/ 13 февраля 2012

Я работаю над простым видеопроигрывателем на Python и PyGTK, используя VLC в качестве бэкенда проигрывателя.Я хочу показать видеоизображение в gtk.DrawingArea, поэтому в Linux я использую builder.get_object ('drawingarea1'). Window.xid , чтобы получить XID виджета DrawingArea.В Windows, согласно документации, я должен использовать builder.get_object ('drawingarea1'). Window.handle , но когда я начинаю воспроизводить видеофайл, он воспроизводится во всем окне, а не тольков gtk.DrawingArea.Я начал копать, чтобы выяснить, что происходит, и обнаружил, что число, полученное из builder.get_object ('mainWindow'). Window.handle совпадает с builder.get_object ('drawingarea1'). Window..handle .Это правильный способ получить обработчик виджета, или я что-то не так делаю?

1 Ответ

2 голосов
/ 21 февраля 2012

Я не уверен, что именно вы сделали без примера, однако я немного поискал и нашел этот вопрос и возможный ответ здесь http://python.6.n6.nabble.com/gtk-DrawingArea-handle-id-on-win32-bug-td1943074.html. И пример был прикреплен.Ссылка http://library.gnome.org/devel/gtk/2.18/gtk-migrating-ClientSideWindows.html, которую он предоставляет, больше не существует, но я нашел обновленную ссылку http://developer.gnome.org/gtk/2.24/gtk-migrating-ClientSideWindows.html. По сути, кажется, что вы должны позвонить

drawingarea.window.ensure_native()

, чтобы сделать

*Атрибут 1011 *

возвращает правильный собственный дескриптор области рисования

В Linux получение атрибута

drawingarea.window.xid

автоматически вызывает

drawingarea.window.ensure_native()

, но

drawingarea.window.handle

не делает это для вас.

Надеюсь, это поможет.

...