如何获得Xlib.display.Window按id实例?

2024-09-28 05:28:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我找到了以下代码(http://pastebin.com/rNkUj5V8),但我宁愿使用直接查找:

import Xlib
import Xlib.display

def get_window_by_id(winid):
    mydisplay = Xlib.display.Display()
    root = mydisplay.screen().root # should loop over all screens
    inspection_list = [root]

    while len(inspection_list) != 0:
        awin = inspection_list.pop(0)
        if awin.id == winid:
            return awin
        children = awin.query_tree().children
        if children != None:
            inspection_list += children

    return None

# use xwininfo -tree to click on something (panel was good for me)
# until you find a window with a name, then put that id in here
print get_window_by_id(0x1400003)
print get_window_by_id(0x1400003).get_wm_name()

我尝试过直接实例化一个窗口对象,但是调用get_attributes失败:

^{pr2}$

Tags: importidgetbyifdisplayrootwindow
1条回答
网友
1楼 · 发布于 2024-09-28 05:28:18

使用dpy.create_resource_object('window', 0x1400003),其中dpy是一个Display对象,为具有给定XID的现有窗口在该显示器上获取一个Window对象。在

用法示例:

>>> import Xlib
>>> import Xlib.display
>>> dpy = Xlib.display.Display()
>>> win = dpy.create_resource_object('window', 0x277075e)
>>> win.get_wm_class()
('gnome-terminal', 'Gnome-terminal')

相关问题 更多 >

    热门问题