这是我的代码:
def configure_event(self, widget):
if self.is_hiding:
self.window.present()
else:
self.window.iconify()
def delete_event(self, widget, data=None):
gtk.main_quit()
return True
def popup_menu(self):
self.menu = gtk.Menu()
self.about = gtk.MenuItem("about")
if self.is_hiding:
self.expand = gtk.MenuItem("show")
else:
self.expand = gtk.MenuItem("hide")
self.quit = gtk.MenuItem("quit")
self.about.connect("activate", self.about_monitor)
self.expand.connect("activate", self.configure_event)
self.quit.connect("activate", self.delete_event)
self.menu.popup(None, None, gtk.status_icon_position_menu, event_button, event_time, self.tray_icon)
self.menu.append(self.about)
self.menu.append(self.expand)
self.menu.append(self.monitor)
self.menu.append(self.quit)
self.menu.show_all()
delete_event
有效,但configure_event
没有。为什么呢?
答案 0 :(得分:0)
查看两者的签名:
def configure_event(self, widget):
def delete_event(self, widget, data=None):
delete_event
有第三个参数data
(默认值为None
),但configure_event
只有两个。
虽然我不知道异常是什么,我打赌这个例外是:
TypeError: configure_event() takes exactly 2 arguments (3 given)
如果将configure_event
的签名更改为:
def configure_event(self, widget, data):
会解决它。请注意,我认为None
的默认值是不需要的,因为gtk将始终传递内容。