GTK.Entryが焦点を当てているときにKeyPressを検出します
質問
ESCが押されたときにコンテンツをクリアするエントリウィジェットを作成しようとしていました。
これが私が試したものです -
class MyWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self)
editor = Gtk.Entry()
self.add(editor)
.
ウィジェットをどのように接続するかわかりません。ESCはKeyPressですが、エントリがフォーカス中のときにキープレスが発生するはずです。私は完全に失われています。
ESCが押されたときにクリアするエントリを作るのを手伝ってください。
解決
Entryウィジェットの押下またはリリースされているキーに関する通知を受信するには、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