我正在 Python 和 PyGTK 中开发一个简单的视频播放器,使用 VLC 作为播放器后端。我想在 gtk.DrawingArea 中显示视频图像,因此在 Linux 中,我使用 builder.get_object('drawingarea1').window.xid 来获取 DrawingArea 小部件的 XID。在Windows中,根据文档,我必须使用builder.get_object('drawingarea1').window.handle,但是当我开始播放视频文件时,它会在整个窗口中播放,而不是就在 gtk.DrawingArea 中。我开始挖掘以查找发生的情况,发现从 builder.get_object('mainWindow').window.handle 检索到的数字与 builder.get_object('drawingarea1') 相同。窗口句柄。这是获取小部件处理程序的正确方法,还是我做错了什么?
最佳答案
如果没有示例,我不确定你到底做了什么,但是我做了一些搜索,并在这里找到了这个问题和可能的答案 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()
制作
drawingarea.window.handle
属性返回绘图区域的正确 native 句柄
在 Linux 上获取属性
drawingarea.window.xid
自动调用
drawingarea.window.ensure_native()
但是
drawingarea.window.handle
不会为您执行此操作。
我希望这会有所帮助。
关于video - 在 Windows 上获取 gtk.gdk.window.handle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9259731/