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

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

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

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

有帮助吗?

解决方案

你可以连接 Gtk.Entry 到任一 "key-press-event" 或/和 "key-release-event" 接收有关条目小部件按下或释放的键的通知。当条目接收到必须处于焦点的按键/释放事件时,将调用回调。要检查是否 Escape 键已被按下,您可以使用 事件 传递给回调。您可以检查 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)

网上有大量文档可以为您提供帮助。
希望这可以帮助!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top