forward需要1个参数(给定0个)

2024-04-20 07:12:42 发布

您现在位置:Python中文网/ 问答频道 /正文

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”按钮时,我得到一个类型错误,表示给定了0个参数。除了自我(已经给了?)我不知道该怎么说。是我在这里遗漏了什么东西,还是计划太差,以至于无法移动海龟?你知道吗


Tags: textselfrightmaindefstepbuttonside
1条回答
网友
1楼 · 发布于 2024-04-20 07:12:42

您需要引用在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)

相关问题 更多 >