Вы, вероятно, должны использовать холст и изображение на холсте вместо 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()