python-Linux上具有pygtk(gtk.gdk)的桌面/根窗口上的键盘/鼠标事件
作者:互联网
如标题所示,我正在尝试使用Python-gtk捕获Mouse和Keyboard事件.
我可以使用python-xlib轻松做到这一点:
self.display = display.Display()
self.screen = self.display.screen()
self.root_window = self.screen.root
self.root_window.grab_pointer(1,
X.ButtonPressMask | X.ButtonReleaseMask | X.Button1MotionMask,
X.GrabModeAsync,
X.GrabModeAsync,
X.NONE, X.NONE,
X.CurrentTime)
self.root_window.grab_keyboard(1,
X.GrabModeAsync,
X.GrabModeAsync,
X.CurrentTime)
我看到了使用gtk.gdk.*函数的模拟,但是我似乎无法在主桌面窗口上捕获事件.能做到吗?
这就是我试图完成任务的方式…(ALL_EVENTS_MASK真是无奈之举;])
self.root_window = gtk.gdk.get_default_root_window()
self.root_window.set_events(gtk.gdk.ALL_EVENTS_MASK)
gtk.gdk.event_handler_set(self.filter_callback)
gtk.main()
def filter_callback (self, *args):
print args
解决方法:
这是我刚刚做过的一个示例,您可以基于此示例:
import gtk
def on_key_press(widget, data=None):
print "click"
if __name__ == '__main__':
w = gtk.Window()
# Connect the callback on_key_press to the signal key_press.
w.connect("key_press_event", on_key_press)
# Make the widget aware of the signal to catch.
w.set_events(gtk.gdk.KEY_PRESS_MASK)
w.show_all()
gtk.main()
现在启动脚本,然后单击任何关键字和输出(输出):
$python gtk_script.py
click
click
click
click
希望这可以帮助
标签:gtk,pygtk,gdk,linux,python 来源: https://codeday.me/bug/20191208/2094702.html