Я пытаюсь выучить tkinter, написав виртуальную камеру. Появляется окно с холстом, обработчики читают нажатые клавиши и вызывают функции. Но когда я нажимаю кнопку «P», связанную с очисткой холста, написанием сообщения и закрытием окна, на самом деле ничего не происходит, кроме закрытия окон. И я, честно говоря, не знаю, что я делаю не так. Не могли бы вы помочь мне выяснить, почему я не могу очистить элементы и написать здесь?
import numpy
import sys
import tkinter
from time import sleep
import math
end = False
STEP = 5
ZOOM = 20
ROTATION = math.pi/15
"""
def zoom(symbol):
def move(vector):
def rotate(direction):
"""
def fin():
global end
end = True
def key(event):
handler = {
'w': lambda: move([0, 0, -STEP]),
's': lambda: move([0, 0, STEP]),
'a': lambda: move([STEP, 0, 0]),
'd': lambda: move([-STEP, 0, 0]),
'q': lambda: move([0, -STEP, 0]),
'e': lambda: move([0, STEP, 0]),
'r': lambda: zoom(True),
'f': lambda: zoom(False),
'y': lambda: rotate(8),
'h': lambda: rotate(2),
'g': lambda: rotate(4),
'j': lambda: rotate(6),
't': lambda: rotate(1),
'u': lambda: rotate(3),
'p': lambda: fin(),
}.get(event.char)
if handler:
handler()
render()
def render():
if end:
canvas.delete("all")
canvas.create_text(200, 30, fill="white", text="bye bye")
canvas.pack()
sleep(2)
sys.exit('elo')
canvas.pack()
root = tkinter.Tk()
root.title('Camera')
canvas = tkinter.Canvas(root, width=1024, height=768, bg='black')
canvas.create_line(0, 100, 200, 0, fill="red")
root.bind('<Key>', key)
render()
tkinter.mainloop()