pygtk:确定按键是否为修饰键

6 投票
2 回答
1455 浏览
提问于 2025-04-15 18:34

我有一个处理按键事件的程序,我需要判断按下的是哪种键:是修饰键还是普通键?

在事件的状态中找不到这个信息,因为这个状态只在修饰键和其他键一起按下时才有效,但我需要的是单独按下修饰键(比如单独按下控制键或选项键等)的情况。

2 个回答

2

你可以在event.keyval中找到你想要的内容。例如,下面的代码对我来说是有效的:

def key_press_event(widget, event):
    keyname = gtk.gdk.keyval_name(event.keyval)
    if "Control" in keyname or "Alt" in keyname:
        print "You pressed a modifier!"
4

如果你使用的GTK+/PyGTK版本比较新,键盘事件会有一个叫做is_modifier的属性。虽然在PyGTK的参考资料里没有说明,但在GDK的API文档中有提到,并且在PyGTK中可以使用。这个属性是在GDK 2.10版本中加入的。

撰写回答