在python中捕获鼠标点击

时间:2014-03-29 00:11:44

标签: python gtk xlib

我正在尝试在我的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

如果您对此错误或其他方式有任何想法,那么它真的有用!

1 个答案:

答案 0 :(得分:0)

BadAccess这是因为“尝试选择一个事件类型,只有一个客户端可以在另一个客户端已经选择它时选择它。”

x11 protocol documentation,ChangeWindowAttributes请求(操作码2是此请求代码,资源ID = 146是您的根赢取ID):

  

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

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