Объект в ткинтер откликается на нажатие клавиш с задержкой. (Когда квадрат меняет направление, он зависает на секунду)
from tkinter import *
import random
window = Tk()
window.geometry("1000x650")
canvas = Canvas(window, width=1000, height=650)
canvas.pack()
background = PhotoImage(file=r"тут путь к файлу")
class Player:
def __init__(self):
self.x = 900
self.y = 550
self.v = 0
self.v_x = 0
self.photo = PhotoImage(file=r"тут путь к файлу")
def up(self, event):
self.v = -5
def down(self, event):
self.v = 5
def left(self, event):
self.v_x = -5
def right(self, event):
self.v_x = 5
def stop(self, event):
self.v = 0
self.v_x = 0
player = Player()
def game():
canvas.delete("all")
canvas.create_image(300, 300, image=background)
canvas.create_image(player.x, player.y, image=player.photo)
# Движение игрока по осям
window.after(5, game)
player.y += player.v
player.x += player.v_x
#Стены
if player.x >= 985:
player.x = 980
elif player.x <= 20:
player.x = 18
if player.y>= 635:
player.y=630
elif player.y<= 20:
player.y = 18
window.bind_all("<Key-Up>", player.up)
window.bind("<Key-Down>", player.down)
window.bind("<Key-Left>", player.left)
window.bind("<Key-Right>", player.right)
window.bind("<KeyRelease>", player.stop)
game()
window.mainloop()
Источник: Stack Overflow на русском