Доброго времени суток друзья!!!
Помогите найти мою ошибку, а то я уже который день ломаю на дней голову.
Суть проблемы в следующем при закрытии программы PyCharm версий 2020.1,Выдает следующую ошибку:
C:\ForChildrens\Scripts\python.exe C:/Users/mikki/PycharmProjects/ForChildrens/PaddleBall.py
Traceback (most recent call last):
File "C:\Users\mikki\PycharmProjects\ForChildrens\PaddleBall.py", line 28, in <module>
ball.draw()
File "C:\Users\mikki\PycharmProjects\ForChildrens\PaddleBall.py", line 10, in draw
self.canvas.move(self.id, 0, -1)
File "C:\Users\mikki\AppData\Local\Programs\Python\Python39\lib\tkinter__init__.py", line 2917, in move
self.tk.call((self._w, 'move') + args)
_tkinter.TclError: invalid command name ".!canvas"
Process finished with exit code 1
==================
Также выкладываю листинг данной программы.
from tkinter import *
import random
import time
class Ball:
def __init__(self, canvas, color):
self.canvas = canvas
self.id = canvas.create_oval(10, 10, 25, 25, fill=color)
self.canvas.move(self.id, 245, 100)
def draw(self):
self.canvas.move(self.id, 0, -1)
tk = Tk()
tk.title('Игра')
tk.resizable(0, 0)
tk.wm_attributes('-topmost', 1)
canvas = Canvas(tk, width=500, height=400, bd=0, highlightthickness=0)
canvas.pack()
tk.update()
ball = Ball(canvas, 'red')
def handler():
global run
run = False
tk.protocol("WM_DELETE_ WINDOW", handler)
run = True
while 1:
ball.draw()
tk.update_idletasks()
tk.update()
time.sleep(0.01)
tk.mainloop()
tk.destroy()
}