为什么按下键时此图像不移动?

问题描述

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)

这将移动所有带有此特定标签的对象。