使用pygobject正确监听特定密钥的方法?

时间:2013-01-20 23:00:57

标签: python gtk 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()

这段代码可以做到它应该做的事情,但是,我不确定这是不是应该这样做的方式。特别是我检索keyval的方式似乎并不那么优雅。 有更好的方式吗?

感谢您对某些文档的建议或指示(我找不到任何文档)。

1 个答案:

答案 0 :(得分:1)

您可以使用keyval名称(与没有前缀的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