我在版本3中迷失了..在python2+gdk2中是:
#!/usr/bin/env python2
import gtk
gtk.gdk.window_process_all_updates()
window_xid = 54525964
gdk_window = gtk.gdk.window_foreign_new(window_xid)这是非常直接的。但接下来,恐怖的是:
#!/usr/bin/env python3
from gi.repository import xlib
from gi.repository import Gdk
from gi.repository import GdkX11
Gdk.Window.process_all_updates()
xlib_window = "???????"
gdk_display = GdkX11.X11Display.get_default()
gdk_window = GdkX11.X11Window.foreign_new_for_display(gdk_display, xlib_window)xlib要了我的命..我不能用它做任何事。以前有人用过它吗??
我已经多次阅读过的文档是:Gdk3、Xlib
从窗口的xid获取窗口是在python2中获取屏幕截图的最快方法,我想我会在python3中尝试另一种方法。有什么想法吗?也许是根窗口中的peek_children??但是,我怎么知道这是否是我想要的窗口呢?
发布于 2011-11-01 16:24:36
X11中的Window与XID相同。只有一个从一个到另一个的类型定义。
因此,在C代码中,gdk_x11_window_foreign_new_for_display()只接受Window或XID,这基本上是一个整数。这也适用于使用自省的python:
#!/usr/bin/env python3
from gi.repository import Gdk
from gi.repository import GdkX11
Gdk.Window.process_all_updates()
xlib_window = 0x2a00005 # from xwininfo command
gdk_display = GdkX11.X11Display.get_default()
gdk_window = GdkX11.X11Window.foreign_new_for_display(gdk_display, xlib_window)
print(gdk_window.get_geometry())https://stackoverflow.com/questions/6850698
复制相似问题