2011-07-04 7 views
0

からwindow_stateを切り替える方法これは私のコードです:PyGTKのは:popup_menu

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

外観:

def configure_event(self, widget): 
def delete_event(self, widget, data=None): 

delete_eventは第三引数data(つまりNoneのデフォルトを持っている)が、configure_eventは2つだけを持っています。

私は例外が私は例外があったことを賭けたのか分からないが:それを修正するだろう

def configure_event(self, widget, data): 

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

もしそうにconfigure_eventの署名を変更します。 gtkは常に何かを渡すので、私はNoneのデフォルト値は不要だと思います。