2015-11-30 41 views
1

所以我正在写这个程序,使用乌龟绘制磁盘。我正在做一个tkinter接口,使用按钮等,但是,我似乎无法通过按钮在类中执行一个函数。它提示我这个经典python错误,“turtleInput()缺少1所需的位置参数:'numPressed'”Tkinter按钮和类。我怎样才能有效地通过按钮调用一个类的功能?

我试过一百万次,一百万种方法,我只是不能看到问题,也许你们其中一个可以。我会给你提供课堂内的功能和按钮(当然是代码),希望你能帮助我。如果您不太明白我的意思,请随时提问。

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的,乌龟和其他一切工作正常,这是唯一的问题。

+0

有没有办法知道肯定,因为你并没有包括所有的代码,但如果'Disk'是一类,你就需要通过一个实例* *作为其任何方法的第一个参数,否则将你的调用写为'inst.turtleInput(2)'(其中'inst'是'Disk'类的一个实例)。如果您没有实例,那么您期望调用该方法做什么? – kindall

+0

磁盘实际上是一个类,完整的代码只是具有__init__和该函数的类磁盘,其余的代码是按钮num2和num3,加上所有tkinter的东西,你知道root = Tk()等很短,这就是它,即时通讯将尝试你的建议,感谢您的快速回复寿! – arregoitiaj1

回答

0

您必须引用Disk对象,而不是Disk时引用的函数。

该解决方案是这样的:

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