当 Gtk.Entry 处于焦点状态时检测按键
题
我试图制作一个 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_PRESS
和 Gdk.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)
网上有大量文档可以为您提供帮助。
希望这可以帮助!
不隶属于 StackOverflow