2016-07-28 43 views
0
from turtle import * 
from Tkinter import * 

class TurtleApp: 
    def left(self): 
      self.turtle.right(90) 
    def forward(self): 
      self.turtle.forward(self.step) 
    def right(self): 
      self.turtle.right(90) 
    def backward(self): 
      self.turtle.backward(self.step) 


    def __init__(self): 
      self.main = Tk() 
      self.main.title('TurtleApp') 
      self.step = 10 
      self.turtle = Turtle() 
      self.window = Screen() 
      self.window.setup(500,500) 
      self.turtle.speed(self.step) 
      topFrame = Frame(self.main) 
      topFrame.pack(side='top') 
      topLabel = Label(topFrame, text='Turtle Controls') 
      topLabel.pack() 
      self.createDirectionPad() 
      self.createStepEntry() 

    def createDirectionPad(self): 
      leftFrame = Frame(self.main) 
      leftFrame.pack(side='left') 
      leftButton = Button(leftFrame, text='Left',command=left) 
      forwardButton = Button(leftFrame, text='Forward',command=forward) 
      rightButton = Button(leftFrame, text='Right',command=right) 
      backwardButton = Button(leftFrame, text='Backward',command=backward) 
      leftButton.grid(row=1,column=0) 
      forwardButton.grid(row=0,column=1) 
      rightButton.grid(row=1,column=2) 
      backwardButton.grid(row=2,column=1) 

    def createStepEntry(self): 
      rightFrame = Frame(self.main) 
      rightFrame.pack(side='right') 
      stepLabel = Label(rightFrame,text='Enter step size') 
      stepLabel.pack(side='top') 
      stepEntry = Entry(rightFrame) 
      stepEntry.pack() 
      stepButton = Button(rightFrame,text='Change step size') 
      stepButton.pack(side='bottom') 


root = TurtleApp() 

root.main.mainloop() 

當我運行這個,然後單擊「轉發」按鈕,我得到一個類型錯誤,說0參數給出。除了自我(已經有人提供了?),我不知道該傳遞給它。我在這裏失蹤了些什麼,或者它計劃很差,無法移動烏龜?轉發期望1個參數(0給出)

+0

能否請您包括海龜類呢? –

+0

包括龜類在哪裏? – BeamerEA

+0

它應該是'self.backward','self.forward'等。 – zondo

回答

1

您需要參考TurtleApp類中定義的forward()方法,而不是turtle模塊中定義的turtle.forward()函數。後者被稱爲,因爲from turtle import *forward()置於全局範圍內,因此調用了錯誤的forward()

變化createDirectionPad()代碼使用self引用類的方法時:

leftButton = Button(leftFrame, text='Left',command=self.left) 
    forwardButton = Button(leftFrame, text='Forward',command=self.forward) 
    rightButton = Button(leftFrame, text='Right',command=self.right) 
    backwardButton = Button(leftFrame, text='Backward',command=self.backward) 
相關問題