pygtk: как переключить window_state из popup_menu - PullRequest
0 голосов
/ 04 июля 2011

Это мой код:

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 - нет.Почему?

1 Ответ

0 голосов
/ 04 июля 2011

посмотрите на подписи обоих:

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 всегда будет что-то передавать.

...