2016-07-28 41 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) 
相关问题