【问题标题】:button command option in tkintertkinter 中的按钮命令选项
【发布时间】:2015-04-30 16:13:56
【问题描述】:

在下面的小 GUI 应用程序中。当我使用按钮的命令选项来调用函数时。它不像这样工作:self.update(),而是像这样工作:self.update。为什么这样?按钮的命令选项是一种特殊的工作方式吗?我认为应该使用大括号() 调用方法或函数,除非它是属性:

     @name.setter:
     def setter(self, name): 
             self.name = name

     #main 
     object.name = "New_obj"

注意:以上只是一个模板,所以你可能明白我的意思。我没有写完整的有效代码。包括课堂和一切。

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)

【问题讨论】:

  • 那是因为您将函数作为要解压缩和调用的参数传入。函数是对象,记住这一点!

标签: python button tkinter


【解决方案1】:

这是一个高阶函数,这意味着您将函数引用为对象。您不是调用函数并将命令分配给函数的返回值。请参阅here 了解更多信息。

【讨论】:

    【解决方案2】:

    command 参数采用对函数的引用——即:函数的名称。如果添加括号,则表示要求 python 执行函数并将函数的结果提供给command 参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-14
      • 2023-02-24
      • 1970-01-01
      • 1970-01-01
      • 2020-11-18
      • 1970-01-01
      • 1970-01-01
      • 2021-07-08
      相关资源
      最近更新 更多