繁体   English   中英

在python中捕获鼠标点击

[英]Catch mouse clicks in python

我正在尝试在python代码中捕获鼠标单击事件(不仅是在我创建的Gtk窗口中单击,而且还在屏幕上的任何位置)。 经过一番搜索,我发现了一个谈论xlib的线程(很棒,我已经有了一个依赖项)。

from Xlib import display, X

display = display.Display()
root = display.screen().root
root.change_attribute(event_mask = X.ButtonPressMask | X.ButtonReleaseMask)

while True:
    event = root.display.next_event()
    print(event)

问题是这段代码抛出错误,我只是找不到好的文档...

X protocol error:
<class 'Xlib.error.BadAccess'>: code = 10, resource_id = 146, sequence_number = 9, major_opcode = 2, minor_opcode = 0

如果您对此错误有任何想法或以其他方式执行此操作,它将真正有帮助!

这里的BadAccess是因为“试图选择一个事件类型,而另一个客户机已经选择了该事件类型,那么一次只能选择一个。

根据x11协议文档的 ChangeWindowAttributes请求(操作码2是此请求代码,资源id = 146是您的root win ID):

多个客户端可以在同一窗口上选择输入; 它们的事件掩码是不相交的。 生成事件时,会将事件报告给所有感兴趣的客户。 但是,一次只能有一个客户端可以选择SubstructureRedirect,一次只能有一个客户端选择ResizeRedirect,一次只能有一个客户端选择ButtonPress。 尝试违反这些限制会导致访问错误。

尝试仅选择ButtonReleaseMask作为可能的解决方案

暂无
暂无

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

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