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には 3 番目の引数data(デフォルトはNone) がありますが、 configure_event2 つしかありません。

例外が何であったかはわかりませんが、例外は次のとおりだったと思います。

TypeError: configure_event() takes exactly 2 arguments (3 given)

configure_eventその場合、の署名を次のように変更します。

def configure_event(self, widget, data):

それを修正します。Nonegtk は常に何かを渡すので、デフォルト値は不要だと思うことに注意してください。

于 2011-07-04T17:35:12.653 に答える