tkinter 中的按钮命令选项
button command option in tkinter
在下面的小 GUI 应用程序中。当我使用按钮的命令选项调用函数时。它不是这样工作的:self.update()
而是这样工作的:self.update
。为什么这样?按钮的命令选项是否有某种特殊的工作方式?我认为应该使用那些大括号 ()
调用方法或函数,除非它是 属性:
即
@name.setter:
def setter(self, name):
self.name = name
#main
object.name = "New_obj"
注意:以上只是一个模板,您可能会明白我的意思。我没有写完整的有效代码。包括 class 和一切。
from tkinter import *
class MuchMore(Frame):
def __init__(self, master):
super(MuchMore,self).__init__(master)
self.count =0
self.grid()
self.widgets()
def widgets(self):
self.bttn1 = Button(self, text = "OK")
self.bttn1.configure(text = "Total clicks: 0")
self.bttn1["command"] = self.update # This is what I am taking about
self.bttn1.grid()
def update(self):
self.count += 1
self.bttn1["text"] = "Total clicks" + str(self.count)
#main
root = Tk()
root.title("Much More")
root.geometry("324x454")
app = MuchMore(root)
command
参数采用 对函数的引用 -- 即:函数的 名称 。如果添加括号,则表示您要求 python 执行函数并将函数的结果提供给 command
参数。
它是一个高阶函数,这意味着您将函数作为对象引用。您 不是 调用函数并将命令分配给函数的 return 值。有关详细信息,请参阅 here。
在下面的小 GUI 应用程序中。当我使用按钮的命令选项调用函数时。它不是这样工作的:self.update()
而是这样工作的:self.update
。为什么这样?按钮的命令选项是否有某种特殊的工作方式?我认为应该使用那些大括号 ()
调用方法或函数,除非它是 属性:
即
@name.setter:
def setter(self, name):
self.name = name
#main
object.name = "New_obj"
注意:以上只是一个模板,您可能会明白我的意思。我没有写完整的有效代码。包括 class 和一切。
from tkinter import *
class MuchMore(Frame):
def __init__(self, master):
super(MuchMore,self).__init__(master)
self.count =0
self.grid()
self.widgets()
def widgets(self):
self.bttn1 = Button(self, text = "OK")
self.bttn1.configure(text = "Total clicks: 0")
self.bttn1["command"] = self.update # This is what I am taking about
self.bttn1.grid()
def update(self):
self.count += 1
self.bttn1["text"] = "Total clicks" + str(self.count)
#main
root = Tk()
root.title("Much More")
root.geometry("324x454")
app = MuchMore(root)
command
参数采用 对函数的引用 -- 即:函数的 名称 。如果添加括号,则表示您要求 python 执行函数并将函数的结果提供给 command
参数。
它是一个高阶函数,这意味着您将函数作为对象引用。您 不是 调用函数并将命令分配给函数的 return 值。有关详细信息,请参阅 here。