首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从xid获取Gdk窗口?

如何从xid获取Gdk窗口?
EN

Stack Overflow用户
提问于 2011-07-28 04:17:29
回答 1查看 3.4K关注 0票数 9

我在版本3中迷失了..在python2+gdk2中是:

代码语言:javascript
复制
#!/usr/bin/env python2
import gtk

gtk.gdk.window_process_all_updates()
window_xid = 54525964
gdk_window = gtk.gdk.window_foreign_new(window_xid)

这是非常直接的。但接下来,恐怖的是:

代码语言:javascript
复制
#!/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??但是,我怎么知道这是否是我想要的窗口呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-01 16:24:36

X11中的WindowXID相同。只有一个从一个到另一个的类型定义。

因此,在C代码中,gdk_x11_window_foreign_new_for_display()只接受WindowXID,这基本上是一个整数。这也适用于使用自省的python:

代码语言:javascript
复制
#!/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())
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6850698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档