类型错误:turn_left() 缺少 1 个必需的位置参数:'self'

问题描述

我无法克服这个错误

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\Usuario\AppData\Local\Programs\Python\python39\lib\tkinter\__init__.py",line 1884,in __call__
    return self.func(*args)
  File "C:\Users\Usuario\AppData\Local\Programs\Python\python39\lib\turtle.py",line 687,in eventfun
    fun()
TypeError: turn_left() missing 1 required positional argument: 'self'

我不知道我做错了什么。

我正在使用 Turtle。

class Player(Sprite):
    def __init__(self,spriteshape,color,startx,starty):
        Sprite.__init__(self,starty)
        self.speed = 4
        self.lives = 3

    def turn_left(self):
        self.lt(45)

    def turn_right(self):
        self.rt(45)

    def accelarate(self):
        self.speed += 1

    def decelarate(self):
        self.speed -= 1

turtle.onkey(Player.turn_right,"Right")
turtle.onkey(Player.turn_left,"Left")
turtle.onkey(Player.accelarate,"Up")
turtle.onkey(Player.decelarate,"Down")
turtle.listen()

解决方法

self 对象在创建类的实例时启动,您没有这样做,因此它找不到必需的 参数 self。>

试试这个:

P = Player(spriteshape='your-shape',color='your-color',startx='start-x-value',starty='start-y-value)

turtle.onkey(P.turn_right,"Right")