使用pygtk在桌面/根窗口上的键盘/鼠标事件(gtk.gdk公司)在Linux上

2024-09-27 07:26:51 发布

您现在位置:Python中文网/ 问答频道 /正文

正如标题所述,我试图用pythongtk捕捉鼠标和键盘事件。在

我可以使用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公司.*函数,但我似乎无法在主桌面窗口上捕获事件。这能做到吗?在

这就是我试图完成任务的方式。。。(所有的事件都是绝望的行为;])

^{pr2}$

Tags: selfnone标题display事件root鼠标键盘
2条回答

下面是我刚才做的一个例子,你可以以此为基础:

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()

现在启动脚本并单击任何关键字key et voilá(Output):

^{pr2}$

希望这能有所帮助

我猜这不能用普通的Gtk来完成,你必须使用Xlib或其他形式的与服务器本身的通信。除非你的应用程序运行在根窗口本身。在

当然,我可能错了。在

相关问题 更多 >

    热门问题