Python Tkinter Canvas имеет 2 разных значения для x и y - PullRequest
0 голосов
/ 12 июня 2019

так что это мой третий вопрос об использовании 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, изображение холста изменяется, но этого не происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...