pygtk: как вручную излучать сигнал - PullRequest
2 голосов
/ 10 апреля 2011

У меня есть объект gtk.Entry(), и я бы хотел вручную выдать focus-out-event. Какой второй параметр мне нужно передать в метод emit?

In [10]: d.emit('focus-out-event')
TypeError: 1 parameters needed for signal focus-out-event; 0 given

In [11]: d.emit('focus-out-event', d)
TypeError: could not convert type gtk.Entry to GdkEvent required for parameter 0

1 Ответ

3 голосов
/ 11 апреля 2011

Вам нужен gtk.gdk.Event в качестве второго параметра.

Вот как вы его создаете: (отказ от ответственности, я не проверял это)

event = gtk.gdk.Event(gtk.gdk.FOCUS_CHANGE)
event.window = entry.get_window()  # the gtk.gdk.Window of the widget
event.send_event = True  # this means you sent the event explicitly
event.in_ = False  # False for focus out, True for focus in

Вы можете посмотреть различные типы событий и какие параметры им требуются на странице, на которую я ссылался выше.

...