因此,我不会相对于其旧位置移动Label
(由于正在显示图片,所以我无法使用Canvas
。
我试图只使用bg.place(y-1)
,但是Python告诉我,它不知道y
。
我试图获取标签的坐标,但是python告诉我Label
没有该属性。
from tkinter import *
import keyboard
w=Tk()
bg=Label(w,image=MYPICTURE)
bg.place(x=0,y=0,width=900,height=700)
def backgroundmovement():
if ingame == True:
yold=bg.coords(y)
bg.place(y=yold-1)
keyboard.add_hotkey('w', lambda: backgroundmovement())
答案 0 :(得分:0)
您可能应该使用画布和画布上的图像,而不要使用Label
,place
几何管理器和标签上的图像...
类似这样的内容:
->矩形将替换图像,但是您可以轻松替换它。
->我建议使用import tkinter as tk
以避免混乱名称空间。
->不必使用keyboard
,可以使用由键绑定和tkinter
生成的tkinter mainloop
事件。
import tkinter as tk
dxdy = {'Up': (0, -1), 'Down': (0, 1), 'Left': (-1, 0), 'Right': (1, 0)}
def backgroundmovement(e):
try:
dx, dy = dxdy[e.keysym]
except KeyError:
pass
else:
canvas.move(gif1, dx, dy)
window = tk.Tk()
canvas = tk.Canvas(window)
canvas.pack()
# gif1 = PhotoImage(file='my_beautiful_background.gif')
# canvas.create_image(50, 10, image=gif1, anchor=NW)
gif1 = canvas.create_rectangle(50, 50, 100, 100, fill='')
window.bind('<Up>', backgroundmovement)
window.bind('<Down>', backgroundmovement)
window.bind('<Left>', backgroundmovement)
window.bind('<Right>', backgroundmovement)
window.mainloop()