我正在制作一个简单的tkinter游戏,并遇到了一个问题。我希望能够在您点击它时将图像移动到屏幕上的随机位置,但我认为可行的图像没有。以下是代码:
spr_earth=PhotoImage(file="earth.gif")
x=r.randrange(64,roomw-64)
y=r.randrange(64,roomh-64)
earth=canvas.create_image(x,y,image=spr_earth)
x1,x2,y1,y2=canvas.bbox(earth)
def click(event):
if ((event.x>x1) and (event.x<x2)) and ((event.y>y1) and (event.y<y2)):
canvas.move(earth,r.randrange(64,roomw-64),r.randrange(64,roomh-64))
root.bind_all("<Button-1>",click)
root.mainloop()
我认为这会奏效,但显然不行。你可以点击它,但它似乎传送到太空超越:)
我很感激任何人对此问题的意见。感谢
答案 0 :(得分:2)
从reading the documentation开始,看起来move
坐标相对于当前位置。
也许这样的事情会起作用(警告,此代码未经测试):
def click(event):
if ((event.x>x1) and (event.x<x2)) and ((event.y>y1) and (event.y<y2)):
canvas.coords(earth,(r.randrange(64,roomw-64),r.randrange(64,roomh-64)))
对于它的价值,以下简化的脚本似乎对我有用:
import Tkinter as tk
from random import randrange
root = tk.Tk()
canvas = tk.Canvas(root,width=400,height=400)
canvas.pack()
image = tk.PhotoImage(file='mouse.gif')
def position():
return randrange(0,400),randrange(0,400)
mouse = canvas.create_image(*position(),image=image)
def click(event):
canvas.coords(mouse,position())
canvas.bind('<Button-1>',click)
root.mainloop()
(鼠标总是部分停留在画布上)。