#python #python-3.x #tkinter #tk #tkinter-canvas
#python #python-3.x #tkinter #tk #tkinter-холст
Вопрос:
Я написал код, который отлично работает для перемещения изображения вниз, но я в замешательстве, как снова переместить его в старое положение изображения, которое находится сверху?
import tkinter as tk
def move_object(canvas, object_id, destination, speed=50):
dest_x, dest_y = destination
coords = canvas.coords(object_id)
current_x = coords[0]
current_y = coords[1]
new_x, new_y = current_x, current_y
delta_x = delta_y = 0
if current_x < dest_x:
delta_x = 1
elif current_x > dest_x:
delta_x = -1
if current_y < dest_y:
delta_y = 1
elif current_y > dest_y:
delta_y = -1
if (delta_x, delta_y) != (0, 0):
canvas.move(object_id, delta_x, delta_y)
if (new_x, new_y) != (dest_x, dest_y):
canvas.after(speed, move_object, canvas, object_id, destination, speed)
root = tk.Tk()
canvas = tk.Canvas(root, width=400, height=400)
canvas.pack()
background = tk.PhotoImage(file="Images/scanner-bar.png")
item1 = canvas.create_image(0,0, image=background, anchor=tk.NW)
move_object(canvas, item1, (0, 180), 2)
move_object(canvas, item1, (0, 0), 2)
root.mainloop()
Комментарии:
1. Просто вызовите
move_object(canvas, item1, (0, 0), 2)
.2. Нет. Это приведет к тому, что изображение застрянет на оси 0 x.
3. Если изображение перемещается в
(0, 180)
. Вызовmove_object(canvas, item1, (0, 0), 2)
вернет изображение обратно(0, 0)
.4. Не могли бы вы скопировать мой код и проверить его на своем компьютере? Добавив
move_object(canvas, item1, (0, 0), 2)
, вы поймете, как он привязан к оси 0 x.5. Да, я протестировал ваш код, и он работает нормально. Может быть, вы вызываете его, не дожидаясь полного перемещения изображения.