检测 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.keyval
的 Gdk.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)
其中 & 是按位运算符
我想检测何时按下 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.keyval
的 Gdk.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)
其中 & 是按位运算符