I'm having this error bad event type or key in making snake game, by using turtle graphic in PyCharm

Question:

from turtle import Turtle

STARTING_POSITION = [(0, 0), (-20, 0), (-40, 0)]
MOVE_DISTANCE = 20


class Snake:

    def __init__(self):


        self.adding_dots = []
        self.create_snake()
        self.head = self.adding_dots[0]


    def create_snake(self):
        for position in STARTING_POSITION:
            segment = Turtle("square")
            segment.color("white")
            segment.penup()
            segment.goto(position)
            self.adding_dots.append(segment)

    def move(self):
        for moving in range(len(self.adding_dots) - 1, 0, - 1):
            new_x = self.adding_dots[moving - 1].xcor()
            new_y = self.adding_dots[moving - 1].ycor()
            self.adding_dots[moving].goto(new_x, new_y)
        self.head[0].forward(MOVE_DISTANCE)

    def up(self):
        self.head.setheading(90)

    def down(self):
        self.head.setheading(270)

    def left(self):
        self.head.setheading(180)

    def right(self):
        self.head.setheading(0)

Traceback (most recent call last):
  File "C:UsersKiranPycharmProjectsDay_20main.py", line 14, in <module>
    screen.onkey(game.up, "up")
  File "C:UsersKiranAppDataLocalProgramsPythonPython310libturtle.py", line 1395, in onkey
    self._onkeyrelease(fun, key)
  File "C:UsersKiranAppDataLocalProgramsPythonPython310libturtle.py", line 686, in _onkeyrelease
    self.cv.bind("<KeyRelease-%s>" % key, eventfun)
  File "C:UsersKiranAppDataLocalProgramsPythonPython310libturtle.py", line 417, in bind
    self._canvas.bind(*args, **kwargs)
  File "C:UsersKiranAppDataLocalProgramsPythonPython310libtkinter__init__.py", line 1421, in bind
    return self._bind(('bind', self._w), sequence, func, add)
  File "C:UsersKiranAppDataLocalProgramsPythonPython310libtkinter__init__.py", line 1375, in _bind
    self.tk.call(what + (sequence, cmd))
_tkinter.TclError: bad event type or keysym "up"
Asked By: Kiran Murtaza

||

Answers:

The issue is in the direction control part, you should use uppercase for the first letter.
on your main.py, line 14
It should be

screen.onkey(game.up, "Up")

The same for the other directions ->Up, Down, Left, Right

Answered By: Cynthia168
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.