【问题标题】:Detect keypress when Gtk.Entry is in focus当 Gtk.Entry 处于焦点时检测按键
【发布时间】:2013-11-17 07:38:50
【问题描述】:

我试图制作一个 Entry 小部件,在按下 Esc 时清除其内容。
这是我尝试过的 -

class MyWindow(Gtk.Window):
    def __init__(self):
        Gtk.Window.__init__(self)
        editor = Gtk.Entry()
        self.add(editor)

我不知道将小部件连接到什么。 Esc 是按键,但应在条目处于焦点时发生按键。我完全迷路了。

请帮助我创建一个条目,当按下 Esc 并且它处于焦点时清除。

【问题讨论】:

    标签: python gtk keypress gtk3


    【解决方案1】:

    您可以将Gtk.Entry 连接到"key-press-event" 或/和"key-release-event" 以接收有关输入小部件的按键被按下或释放的通知。当 entry 接收到它必须处于焦点的按键/释放事件时,将调用回调。要检查是否已按下 Escape 键,您可以使用传递给回调的 event。您可以检查 keyval(与 Gdk.Event.KEY_PRESSGdk.Event.KEY_RELEASE 相关联)。您可以使用Gdk.KEY_* 来检查被按下或释放的键的值。您可以尝试以下内容:

    ...
        def on_key_release(self, widget, ev, data=None):
            if ev.keyval == Gdk.KEY_Escape: #If Escape pressed, reset text
                widget.set_text("")
    ...
        def __init__(self):
            Gtk.Window.__init__(self)
            editor = Gtk.Entry()
            editor.connect("key-release-event", self.on_key_release)   
            self.add(editor)
    

    有大量在线文档可以帮助您。
    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-16
      • 1970-01-01
      • 1970-01-01
      • 2022-09-23
      • 2014-01-05
      • 2019-08-26
      相关资源
      最近更新 更多