pygtk:如何手动发出信号

时间:2011-04-10 19:27:44

标签: python gtk pygtk

我有一个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 个答案:

答案 0 :(得分:3)

您需要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

您可以在我上面链接的页面上查找不同类型的事件及其所需的参数。