当Gtk.Entry处于焦点时检测按键

时间:2013-11-17 07:38:50

标签: python gtk keypress gtk3

我试图创建一个Entry小部件,在按下Esc时清除它的内容 这是我尝试过的 -

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

我不知道将小部件连接到的内容。 Esc是一个按键,但是当条目成为焦点时应该发生按键。我完全迷失了。

请帮助我制作一个在按下Esc并清除焦点时清除的条目。

1 个答案:

答案 0 :(得分:8)

您可以将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)

网上有相当数量的文件可以帮助您 希望这有帮助!