微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

移动图像移动整个画布

如何解决移动图像移动整个画布

我正在 Tkinter 上创建一个需要拖放图像的应用程序。问题是当图像移动时,整个画布都会移动。为什么会发生这种情况,如何解决

enter image description here

enter image description here

代码

from tkinter import *
import os

root = Tk()
root.geometry("500x500")
mycanvas = Canvas(root,bg = 'red')
mycanvas.pack()

def cargarimg(archivo): # Se carga imagen
        ruta = os.path.join('img',archivo)
        imagen = PhotoImage(file = ruta)
        return imagen

photo = cargarimg("Res.png")

a = mycanvas.create_image(100,100,image = photo)

def drag_start(event):
    widget = event.widget
    widget.startX = event.x
    widget.startY = event.y

def drag_motion(event):
    widget = event.widget
    x = widget.winfo_x() - widget.startX + event.x
    y = widget.winfo_y() - widget.startY + event.y
    widget.place(x=x,y=y)

mycanvas.tag_bind(a,'<Button-1>',drag_start)
mycanvas.tag_bind(a,'<B1-Motion>',drag_motion)

root.mainloop()

解决方法

这是因为 event.widget 是画布,而不是图像项 a

您需要使用画布的方法 move()moveto() 来移动图像项。以下是使用 drag_motion() 更新的 move()

def drag_motion(event):
    widget = event.widget
    dx,dy = event.x-widget.startX,event.y-widget.startY
    event.widget.move(a,dx,dy)
    widget.startX,widget.startY = event.x,event.y

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。