当 Gtk.Entry 获得焦点时检测按键输入

9
我试图创建一个Entry小部件,当按下Esc键时可以清空其内容。
以下是我的尝试 -
class MyWindow(Gtk.Window):
    def __init__(self):
        Gtk.Window.__init__(self)
        editor = Gtk.Entry()
        self.add(editor)

我不知道要将小部件连接到什么。Esc是一个按键事件,但按键事件应该发生在输入框处于焦点状态时。我完全迷失了方向。

请帮助我创建一个输入框,当它处于焦点状态时按下Esc键会清除内容。

1个回答

14

您可以将 Gtk.Entry"key-press-event" 或/和 "key-release-event" 进行连接,以便接收有关输入小部件按下或释放键的通知。回调将在输入聚焦时接收其接收的键盘按下/释放事件时被调用。要检查是否按了 Escape 键,您可以利用传递给回调的 event。您可以检查与 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)

有相当数量的在线文档可以帮助你。
希望这能帮到你!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接