Хорошо, поэтому я пытаюсь удалить холст, как только требование выполнено, но я получаю эту ошибку:
Я хотел бы, чтобы, когда herox достиг значения 700, фон изменился, и я думаю, что смогу сделать это только после удаления старого фона.
line 56, in <module>
backgroundcanvas.delete(ALL)
AttributeError: 'int' object has no attribute 'delete'
from tkinter import *
from PIL import Image
root = Tk()
root.title("Game")
heroc = None
backgroundcanvas = None
speed = 10
def ChangeMap():
heropos = canvas.coords(heroc)
herox = heropos[0]
heroy = heropos[1]
if herox == 700:
print("requirement met")
backgroundcanvas.delete("all")
backgroundcanvas.create_image(350, 200, image="background2.png")
def Move_hero(event):
global heroc
if event.keysym == "Up":
canvas.move(heroc, 0, -speed)
if event.keysym == 'Down':
canvas.move(heroc, 0, speed)
if event.keysym == 'Right':
ChangeMap()
canvas.move(heroc, speed, 0)
if event.keysym == 'Left':
canvas.move(heroc, -speed, 0)
print(canvas.coords(heroc))
canvas = Canvas(root, bg="black", width=700, height=400)
canvas.pack()
heroc = None
backgroundcanvas = None
background = PhotoImage(file="background.png")
background2 = PhotoImage(file="background2.png")
backgroundcanvas = canvas.create_image(350,200,image=background)
character = PhotoImage(file="hero.png")
heroc = canvas.create_image(30, 260 ,image=character)
canvas.bind_all('<KeyPress-Up>', Move_hero)
canvas.bind_all('<KeyPress-Down>', Move_hero)
canvas.bind_all('<KeyPress-Left>', Move_hero)
canvas.bind_all('<KeyPress-Right>', Move_hero)
root.mainloop()
Если нужны изображения и другие вещи из кода, я добавлю их:)