2013-03-29 8 views
1

Je donne cette commande dans ubuntuPython Tkinter dans ubuntu

def gui_c(self): 
    self.button1=Button(app,text="Search",command=self.search_()) 
    self.button1.grid() 

Je veux search_() fonction en cliquant sur ce button.But avant de cliquer sur cette fonction a été appelée et self.button1.grid() ne sont pas réalisé. S'il vous plaît aider.

+0

Il suffit d'ajouter le mot lambda avant le nom de la fonction. Quelque chose comme ceci: commande = lambda: self.search_() –

Répondre

5

Pour passer la fonction au lieu de l'exécuter, se débarrasser des parenthèses(), donc utiliser command=self.search_ au lieu de command=self.search_()

C'est la manière de python de se référer à la fonction elle-même. Par exemple:

>>> def foo(): 
...  print("Spam eggs bacon and spam") 
... 
>>> foo() 
Spam eggs bacon and spam 

>>> foo 
<function foo at 0x7f4dac4ec2a8> 

>>> a = foo 
>>> a 
<function foo at 0x7f4dac4ec2a8> 

>>> a() 
Spam eggs bacon and spam 
1

Il vous suffit d'écrire:

def gui_c(self): 
    self.button1=Button(app,text="Search",command=self.search_) 
    self.button1.grid() 

est un doute THis que j'avais trop, quand j'étais nouveau Tkinter.