Я делаю игру, и я хотел бы, чтобы мой персонаж двигался только до тех пор, пока нажата клавиша со стрелкой.
Я пытался создать новую кнопку, но я новичок в python, и это сбивает с толку. Я также пытался настроить функцию «кнопка удержана» и «кнопка отпущена», но это сбивает с толку.
Вот мой код.
from tkinter import *
import time
import threading
window = Tk()
window.title("Making things move")
window.bind("<Escape>", lambda e: window.quit()) #binds escape key to close window
winwidth = window.winfo_screenwidth()
winheight = window.winfo_screenheight()
#making a canvas to input images
playground = Canvas(window, width=winwidth, height=winheight, bg="silver")
playground.pack(expand=YES, fill="both")
#making an image and placing it on the canvas
path1=PhotoImage(file="tank1FINAL.png")
tank1=playground.create_image(winwidth/2,winheight/2, image=path1)
path2=PhotoImage(file="tank1FLIP.png")
#tells what to do when keybind is used
def downKeyTank1(event):
for i in range(25):
playground.move(tank1, 0,2)
time.sleep(.025)
window.update()
def upKeyTank1(event):
for i in range(25):
playground.move(tank1, 0,-2)
time.sleep(.025)
window.update()
def leftKeyTank1(event):
#flips the image when key is pressed
global path1, path2, tank1
x, y =playground.coords(tank1)
playground.delete(tank1)
tank1 =playground.create_image(x, y, image=path2)
#makes image move continuously
for i in range(50):
playground.move(tank1, -1,0)
time.sleep(.025)
window.update()
def rightKeyTank1(event):
global path1, path2, tank1
x, y =playground.coords(tank1)
playground.delete(tank1)
tank1 =playground.create_image(x, y, image=path1)
for i in range(50):
playground.move(tank1, 1, 0)
time.sleep(.025)
window.update()
#creates a keybind to movement
playground.bind_all('<Up>', upKeyTank1)
playground.bind_all('<Left>', leftKeyTank1)
playground.bind_all('<Right>', rightKeyTank1)
playground.bind_all('<Down>', downKeyTank1)
window.mainloop()
Некоторые сообщения об ошибках, не относящиеся к проблеме.