所以我不想相对于它的旧位置移动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())
您可能应该使用画布和画布上的图像,而不是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()