Не работает программа. Выдает ошибку Tkinter.TclError

Vadim_23_03

Новичок
Пользователь
Апр 30, 2023
32
1
8
Windows 10.
версия python 3,11
Писал программу (игру) с книги "Python для детей" .Выдает ошибку Tkinter.TclError. Я препробовал многое , но мои познания в питоне изсякли .Помогите пожалусйта. И объясните в чем моя ошибка



Код:
        self.y = -3
        self.canvas_height = self.canvas.winfo_height()
        self.canvas_width = self.canvas_wedth = self.canvas.winfo_width()
# функция попадания мяча по ракетке
    def hit_paddle(self,pos):
        padlle_pos=self.canvas.coords(self.paddle.id)
        if pos[2]>=padlle_pos[0]  and  pos[0]<=paddle_pos[2]:
            if pos[3]>=paddle_pos[1] and pos[3]<=padlle_pos[3]:
                return True
        return False

    def draw(self):
        self.canvas.move(self.id, self.x, self.y)
        pos = self.canvas.coords(self.id)
        if pos[1] <= 0:
            self.y = 3
        if pos[3] >= self.canvas_height:
            self.y = -3
        if self.hit_paddle(pos)==True:
            self.y=-3
        if pos[0] <= 0:
            self.x = 3
        if pos[2] >= self.canvas_wedth:
            self.x = -3
#создание класса ракетка
class Padlle:
    def __init__(self,canvas,color):
        self.canvas=canvas
        self.id=canvas.create_rectangle(0,0,100,10,fill=color)
        self.canvas.move(self.id, 200,300)
        self.x=0
        self.canvas_width=self.canvas.winfo_width()
        self.canvas.bind_all('<KeyPress-left>',self.turn_left)
        self.canvas.bind_all('<KeyPress-right>',self.turn_right)
    def draw(self):
        self.canvas.move(self.id,self.x,0)
        pos=self.canvas.coords(self.id)
        if pos[0]<=0:
            self.x=0
        elif pos[2]>=self.canvas_width:
            self.x=0
# кнопки управления
    def turn_left(self,evt):
        self.x=-2
    def turn_right(self,evt):
        self.x=2


# создание холста
root = tk.Tk()
root.title("Game")
root.resizable(0, 0)
root.wm_attributes("-topmost", 1)
canvas = tk.Canvas(root, width=500, height=500, bd=0, highlightthickness=0)
canvas.pack()
root.update()

ball = Ball(canvas, Padlle,'red')
padlle= Padlle(canvas,'blue')

#основной цикл игры
while 1:
    ball.draw()
    padlle.draw()
    root.update_idletasks()
    root.update()
    time.sleep(0.01)
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 661
474
83
код не полный
Tkinter.TclError - это тип ошибки, описание дальше идет, попробуйте перевести...

для помощи мало информации
 

Vadim_23_03

Новичок
Пользователь
Апр 30, 2023
32
1
8
Traceback (most recent call last):
File "C:\Users\AVIRA\Desktop\1111.py", line 73, in <module>
padlle= Padlle(canvas,'blue')
^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\AVIRA\Desktop\1111.py", line 47, in __init__
self.canvas.bind_all('<KeyPress-left>',self.turn_left)
File "C:\Users\AVIRA\AppData\Local\Programs\Python\Python311\Lib\tkinter\__init__.py", line 1462, in bind_all
return self._bind(('bind', 'all'), sequence, func, add, 0)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\AVIRA\AppData\Local\Programs\Python\Python311\Lib\tkinter\__init__.py", line 1402, in _bind
self.tk.call(what + (sequence, cmd))
_tkinter.TclError: bad event type or keysym "left"

Вот список ошибок(
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 661
474
83
наверное нужно KeyPress-Left
 

Vadim_23_03

Новичок
Пользователь
Апр 30, 2023
32
1
8
Спасибо за то ,что ответили так быстро . Исправил. В интернете нашёл этот код и изучил . Нашёл свои ошибки благодаря ему и исправил . Игра работает я довольный как слон. Чувство собственного достоинства возрасло. Еще раз спасибо. Добра вами и процветания)))
 

Форум IT Специалистов