检测 PyGtk3 中按下的键组合 Python3

Detect combination of keys pressed in PyGtk3 Python3

我想检测何时按下 CTRL + Q 然后执行操作。 现在,我有代码可以检测是否按下了一个键,而不是组合键。

其实我的功能是:

def on_key_press_event(self, widget, event):
    keyname = Gdk.keyval_name(event.keyval)
    print("Key %s (%d) pulsada" % (keyname, event.keyval))
    if keyname ==  "q":
        print (event.state)
        if event.state == "CONTROL_MASK":
            print ("controlcu")
    if keyname == "Escape":
        self.entrada.set_text("")
    if keyname == "Return":
        self.button1.clicked()
        self.entrada.set_text("")

如您所见,我尝试了 "if keyname == 'Escape'" 的东西。我只能找到 PyGtk2 的东西,但找不到 PyGtk3。感谢您的帮助!

+信息:有些东西是西班牙语的:pulsada = pressed;控制cu = 控制Q; entrada = 条目。

不要使用实际的 keyval/modifier 比较名称。一些文档: https://lazka.github.io/pgi-docs/#Gtk-3.0/classes/Widget.html#Gtk.Widget.do_key_press_event

然后这里是 event.keyvalGdk.KEY_* 常量: https://lazka.github.io/pgi-docs/#Gdk-3.0/constants.html#details

以及 event.state 的修饰符:https://lazka.github.io/pgi-docs/#Gdk-3.0/flags.html#Gdk.ModifierType

(仅供参考,它不叫 pygtk3)

为了检查键修饰符,使用

is_ctrl_presset = bool(state & Gdk.ModifierType.CONTROL_MASK)

其中 & 是按位运算符