pygtk:如何手动发出信号

3 投票
1 回答
4444 浏览
提问于 2025-04-16 15:26

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

5

你需要一个 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

你可以在我上面链接的页面上查看不同类型的事件以及它们需要哪些参数。

撰写回答