Возможно, вы слишком обдумываете это: вы можете перемещать лопасть влево при нажатии клавиши Left
и вправо при нажатии клавиши Right
и игнорировать события KeyRelease
.
В следующем примере кодируется поведение лопасти таким образом, что лопасть перемещается влево при нажатии клавиши Left
, останавливается, когда ее отпускают, и перемещается вправо при нажатии клавиши Right
.
import tkinter as tk
def move_paddle(event=None):
dx = 0
if event.keysym == "Left":
dx = -1
elif event.keysym == 'Right':
dx = 1
x0, y0, x1, y1 = canvas.coords(paddle)
if x0 < 1:
dx, x0, x1 = 0, 1, PADDLEWIDTH + 1
elif x1 > WIDTH:
dx, x0, x1 = 0, WIDTH - PADDLEWIDTH, WIDTH
canvas.coords(paddle, x0+dx, y0, x1+dx, y1)
WIDTH, HEIGHT = 100, 30
PADDLEWIDTH = 30
root = tk.Tk()
canvas = tk.Canvas(root, width=WIDTH, height = HEIGHT)
canvas.pack(expand=True, fill=tk.BOTH)
paddle = canvas.create_rectangle((10, 10), (40, 20), fill='red', outline='black')
canvas.bind_all("<KeyPress-Right>", move_paddle)
canvas.bind_all("<KeyPress-Left>", move_paddle)
root.mainloop()