2016-07-28 4 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引数が与えられたというエラーが表示されます。自己(既に与えられていますか?)以外に、私はそれに何を渡すべきかわかりません。私がここで紛失しているものがあるのですか、それともカメを動かすことができないほど計画が悪いのですか?forwardは1つの引数(0が与えられている)を期待しています

+0

あなたにもタートルクラスを含めていただけますか? –

+0

タートルクラスを含む場所はどこですか? – BeamerEA

+0

'self.backward'、' self.forward'などです。 – zondo

答えて

1

TurtleAppクラスで定義されたforward()メソッドを参照する必要があります。turtleモジュールで定義されたturtle.forward()関数ではありません。後者は、from turtle import *forward()をグローバルスコープに配置し、その結果間違ったforward()が呼び出されているために呼び出されています。

変更あなたのクラスのメソッドを参照するときselfを使用するcreateDirectionPad()のコード:

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) 
関連する問題