так что это мой третий вопрос об использовании tkinter и canvas, я искал МНОГО ответа на этот вопрос, но, к сожалению, не смог его найти.
Я пытался перезаписать значения heropos [0] и heropo [1], но, похоже, это не сработало.
from tkinter import *
from PIL import Image
root = Tk()
root.title("Game")
heroc = None
backgroundcanvas = None
speed = 10
def ChangeMap():
mapnumber = 0
heropos = canvas.coords(heroc)
herox = heropos[0]
heroy = heropos[1]
if herox == 700 and mapnumber == 0:
print("requirement met")
canvas.delete(backgroundcanvas)
backgroundcanvas2 = canvas.create_image(350, 200, image=background2)
canvas.lift(heroc) #20, 310
canvas.coords(heroc, 20, 320)
mapnumber=mapnumber+1
print (herox)
print(canvas.coords(heroc))
if herox == 0 and mapnumber == 1:
canvas.delete(backgroundcanvas2)
backgroundcanvas2 = canvas.create_image(350, 200, image=background)
canvas.lift(heroc)
canvas.coords(heroc, 690, 260)
mapnumber=mapnumber-1
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)
ChangeMap()
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="back2.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()
Как правило, ожидаемый результат состоит в том, что когда изображение холста достигает позиции x в 0, изображение холста изменяется, но этого не происходит.