我正在研究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')相同。 window.handle 即可。这是获取窗口小部件处理程序的正确方法,还是我做错了什么?
答案 0 :(得分:2)
我不确定你没有一个例子你究竟做了什么,但是我做了一些搜索并在这里找到了这个问题和可能的答案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
属性返回drawingarea的正确本机句柄
在Linux上获取属性
drawingarea.window.xid
自动调用
drawingarea.window.ensure_native()
但
drawingarea.window.handle
不会为你做这件事。
我希望这会有所帮助。