2015-11-30 39 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) 
相關問題