0

这是我的代码:

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没有。为什么?

4

1 回答 1

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 总是会传递一些东西。

于 2011-07-04T17:35:12.653 回答