使用pygobject监听特定按键的正确方法是什么?
我刚开始学习用Python和GTK编程。经过一天的搜索和查找文档,我找到了一个处理按钮按下事件的解决方案:
from gi.repository import Gtk,Gdk
class BNWrestling(Gtk.Window):
def __init__(self, bnt):
self.connect("key_press_event",self.on_key_press)
def on_key_press(self,widget,eventkey):
keyval = eventkey.get_keyval()[1] #very ugly here
if keyval == Gdk.KEY_Left:
do_sth()
这段代码能正常工作,但我不太确定这样做是否合适。特别是我获取按键值的方式,感觉不是很优雅。有没有更好的方法呢?
谢谢大家的建议或者指向一些文档的方向(我找不到任何相关的文档)。
1 个回答
1
你可以使用键值名称(和GDK_KEY_XXX常量的名字一样,只是去掉了前缀):
def on_key_press_event(self, widget, event, user_data=None):
key = Gdk.keyval_name(event.keyval)
if key == "Left":
do_something()
return True
return False