我是靠谱客的博主 矮小缘分,最近开发中收集的这篇文章主要介绍linux gtk python,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

最后

以上就是矮小缘分为你收集整理的linux gtk python,python-Linux上具有pygtk(gtk.gdk)的桌面/根窗口上的键盘/鼠标事件的全部内容,希望文章能够帮你解决linux gtk python,python-Linux上具有pygtk(gtk.gdk)的桌面/根窗口上的键盘/鼠标事件所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部