2013-01-20 21 views
0

我是用python和gtk进行编程的新手。 google搜索,试图找到文档的天以后,我想出了以下解决方案,在给定的按钮的按下反应:使用pygobject收听特定密钥的正确方法?

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

您可以使用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