2013-11-17 4 views
4

Я пытался создать виджет Entry, который очищает его содержимое при нажатии Esc.
Вот что я пытался -Обнаружение нажатия клавиши, когда Gtk.Entry находится в фокусе

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

Я не знаю, что для подключения виджета. Esc является нажатием клавиши, но нажатие клавиши должно происходить, когда запись находится в фокусе. Я полностью потерян.

Пожалуйста, помогите мне сделать запись, которая очищается, когда Esc нажата, и она находится в фокусе.

ответ

6

Вы можете подключить Gtk.Entry к "key-press-event" или/или "key-release-event", чтобы получать уведомление о нажатии или отпускании ключа для виджета ввода. Обратный вызов будет вызываться, когда запись получает события нажатия клавиши/выпуска, для которых она должна быть в фокусе. Чтобы проверить, был ли нажат ключ Escape, вы можете использовать событие , переданное на обратный вызов. Вы можете проверить ключевое слово (которое связано с 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) 

Имеется достаточное количество документации, доступной онлайн, чтобы помочь вам.
Надеюсь, это поможет!

Смежные вопросы