gpt4 book ai didi

python-3.x - 如何从 xid 获取 Gdk 窗口?

转载 作者:行者123 更新时间:2023-12-04 01:01:45 27 4
gpt4 key购买 nike

我迷失在版本 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 ?但是,我怎么知道它是否是我想要的窗口?

最佳答案

一个 Window在 X11 中与 XID 相同.从一个到另一个只有一个 typedef。

所以在 C 代码中 gdk_x11_window_foreign_new_for_display()只接受 WindowXID ,它基本上是一个整数。这也适用于使用自省(introspection)的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())

关于python-3.x - 如何从 xid 获取 Gdk 窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6850698/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com