2016-07-28 2 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() 

"Forward"버튼을 클릭하고 "Forward"버튼을 클릭하면 0 인수가 주어 졌음을 나타내는 타입 오류가 발생합니다. 자아 (이미 주어 졌습니까?) 이외에 나는 그것을 전달 해야할지 모르겠다. 제가 여기에 빠진 것이 있습니까? 아니면 거북이를 움직일 수 없다는 것이 너무 가난하게 계획되어 있습니까?forward는 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) 
관련 문제