首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >移动图像移动整个画布

移动图像移动整个画布
EN

Stack Overflow用户
提问于 2021-01-05 00:47:41
回答 1查看 43关注 0票数 1

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

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-05 02:14:42

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

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

代码语言:javascript
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65571801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档