问题描述
Python 和 Tkinter nebwie。我尝试在tkinter中制作图像,并使用箭头移动它。该图显示了它应该显示的样子,但是当我尝试使用箭头移动它时,它根本不起作用。知道为什么吗?我使用 python 2.7.18 ,并且使用的是最新版本的 Ubuntu
from Tkinter import *
############
#things
w = 500
h = 500
width=w
height=h
#############
######################################################################
#window
window = Tk()
window.title("Moving image")
canvas = Canvas(window,width = 500,height = 500)
canvas.pack()
my_image = PhotoImage(file="/home/user/Documents/ddd.png")
canvas.create_image(260,125,anchor = NW,image=my_image)
#######################################################################
################################
#var
def up(event):
x = 0
y = -10
canvas.move(my_image,x,y)
def down(event):
x = 0
y = 10
canvas.move(my_image,y)
def left(event):
x = -10
y = 0
canvas.move(my_image,y)
def right(event):
x = 10
y = 0
canvas.move(my_image,y)
###############################
###############################
#binds
window.bind("<Up>",up)
window.bind("<Down>",down)
window.bind("<Left>",left)
window.bind("<Right>",right)
window.mainloop()
##############################
解决方法
您正在尝试移动错误的对象。使用canvas.create_image
返回的对象:
image_id = canvas.create_image(260,125,anchor = NW,image=my_image)
...
canvas.move(image_id,x,y)
或者,您可以在图像上附加标签:
canvas.create_image(260,anchor=NW,image=my_image,tag="move")
...
canvas.move("move",y)
这将移动所有带有此特定标签的对象。