Объект в ткинтер откликается на нажатие клавиш с задержкой. (Когда квадрат меняет направление, он зависает на секунду)

Рейтинг: 0Ответов: 0Опубликовано: 19.02.2023
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()

Ответы

Ответов пока нет.