Tkinter按钮和类。如何通过按钮有效地调用类中的函数?

时间:2015-11-30 22:54:39

标签: python tkinter

所以我写这个程序,用乌龟画磁盘。我正在使用按钮等进行tkinter界面,但是,我似乎无法通过按钮在类中执行函数。它提示我这个经典的python错误," turtleInput()缺少1个必需的位置参数:' numPressed'"

我已经尝试了一百万次,一百万种方式,我只是无法看到问题,也许你们其中一个可以。我将为您提供课堂内的功能和按钮(当然是代码中的),希望您可以帮助我。如果你不太明白我在说什么,请随时提问。

def turtleInput(self, numPressed):
    self.length = int(numPressed)
    self.lstColor = ["maroon","brown","red","orange","yellow",
                  "green","lightgreen","purple","blue",
                  "lightblue"]

    for i in range(0,self.length):
        self.shrink = 220
        self.shrinkLst = []
        while self.shrink > 0:
            self.shrink = self.shrink-20
            self.shrinkLst.append(self.shrink)
        self.diskCol = self.lstColor[i]
        self.turtleDisks(self.diskCol,self.shrinkLst[i])

现在是按钮的代码

    num2= Button(root, text="2", width=3)
    num2["command"]= lambda: Disk.turtleInput(2)
    num2.grid(row=1, column=0, sticky=W, padx=3)

请记住,我导入了tkinter,turtle和其他一切正常,这是唯一的问题。

1 个答案:

答案 0 :(得分:0)

在引用函数时,您需要引用Disk 对象,而不是Disk

解决方案如下所示:

# create instance of Disk
disk = Disk()
...
num2["command"]= lambda: disk.turtleInput(2)