繁体   English   中英

如何从xid获取Gdk窗口?

[英]How to get Gdk window from xid?

我在版本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杀了我..我无法用它做任何事情。 有没有人在使用它之前?

我已经多次使用的文档是: Gdk3Xlib

从xid获取窗口是在python2中获取屏幕截图的最快方法我想我会在python3中尝试另一种方式..任何想法? 也许peek_children从根窗口? 但是,我怎么知道它是否是我想要的窗口?

X11中的WindowXID相同。 从一个到另一个只有一个typedef。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM