Python 如何按id获取Xlib.display.Window实例?
我发现了以下代码(),但我更愿意使用直接查找:Python 如何按id获取Xlib.display.Window实例?,python,xlib,Python,Xlib,我发现了以下代码(),但我更愿意使用直接查找: 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
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\u attributes
失败:
w = Xlib.xobject.drawable.Window(Xlib.display.Display(), 67142278)
w.get_attributes()
/usr/lib/python2.7/dist-packages/Xlib/display.pyc in __getattr__(self, attr)
211 return types.MethodType(function, self)
212 except KeyError:
--> 213 raise AttributeError(attr)
214
215 ###
AttributeError: send_request
使用
dpy。创建资源对象('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')