ubuntu中的Python Tkinter

ubuntu中的Python Tkinter,tkinter,Tkinter,我在ubuntu中发出这个命令 def gui_c(self): self.button1=Button(app,text="Search",command=self.search_()) self.button1.grid() 我想通过单击此按钮搜索函数()。但在单击之前,此函数已被调用,且self.button1.grid()未执行。 请提供帮助。要传递函数而不是执行函数,请去掉()括号,因此请使用command=self.search\u而不是command=sel

我在ubuntu中发出这个命令

def gui_c(self):   
    self.button1=Button(app,text="Search",command=self.search_())
    self.button1.grid()
我想通过单击此按钮
搜索函数()
。但在单击之前,此函数已被调用,且self.button1.grid()未执行。
请提供帮助。

要传递函数而不是执行函数,请去掉()括号,因此请使用
command=self.search\u
而不是
command=self.search()

这是python引用函数本身的方式。 例如:

>>> 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
>>def foo():
...     打印(“垃圾邮件鸡蛋培根和垃圾邮件”)
... 
>>>foo()
垃圾鸡蛋培根和垃圾肉
>>>福
>>>a=foo
>>>a
>>>()
垃圾鸡蛋培根和垃圾肉

要传递函数而不是执行函数,请去掉()括号,因此使用
command=self.search\u
而不是
command=self.search()

这是python引用函数本身的方式。 例如:

>>> 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
>>def foo():
...     打印(“垃圾邮件鸡蛋培根和垃圾邮件”)
... 
>>>foo()
垃圾鸡蛋培根和垃圾肉
>>>福
>>>a=foo
>>>a
>>>()
垃圾鸡蛋培根和垃圾肉

您只需编写:

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

这也是我刚到Tkinter时的一个疑问。

你只需要写:

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

当我还是Tkinter新手时,这也是我的疑问。

只需在函数名前添加lambda一词即可。类似这样的内容:command=lambda:self.search齌()只需在函数名之前添加lambda一词。类似这样的内容:command=lambda:self.search