【问题标题】:Correct way of listening for a specific key with pygobject?用pygobject监听特定键的正确方法?
【发布时间】:2013-01-27 09:38:52
【问题描述】:

我对使用 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 的方式似乎并不那么优雅。 有没有更好的方法?

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

【问题讨论】:

    标签: python gtk pygobject


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-07
      • 2011-12-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-15
      • 2020-04-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多