You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Customtkinter/Tkinter Canvas对象拖拽时位置异常问题求助

Tkinter Canvas拖拽对象位置异常问题求助

我是Tkinter新手,正在开发支持用户拖拽Canvas对象的功能,但移动画布后再次拖拽Canvas对象时,对象会出现位置异常的奇怪表现。难以用文字清晰描述,附上相关代码,恳请各位提供技术帮助。

import customtkinter

from tkinter import Canvas
from PIL import Image, ImageTk

def move(event):
    my_canvas.moveto(my_image,event.x-50,event.y-50)

def scan(event):
    my_canvas.scan_mark(event.x, event.y)

def drag(event):
    my_canvas.scan_dragto(event.x, event.y, gain=2)

def display_coords(event):
    my_label.configure(text=f"X: {event.x} Y:{event.y}")

app = customtkinter.CTk()

frame1 = customtkinter.CTkFrame(master=app)
frame1.pack(padx=10,pady=10, expand=True, fill="both")

my_canvas = Canvas(master=frame1, height=100, width=100, bg="black")
my_canvas.pack(expand=True, fill="both")

# 调整图片大小(原尺寸512x512)
img = Image.open("assets/computadora.png")
resized_image = img.resize((100,100))
image = ImageTk.PhotoImage(resized_image)
frame1.image = image
my_image = my_canvas.create_image(0, 0, image=image, anchor="nw")

my_canvas.tag_bind(my_image,"<Button1-Motion>", move, add="+")
my_canvas.bind("<Button-3>", scan)
my_canvas.bind("<Button3-Motion>", drag)

# 选中Canvas对象时显示鼠标光标坐标
my_label = customtkinter.CTkLabel(master=my_canvas, text="X: None Y: None")
my_label.pack(padx="10px", pady="10px", anchor="se")
my_canvas.tag_bind(my_image, "<Button1-Motion>", display_coords, add="+")

my_canvas.configure(scrollregion=my_canvas.bbox(my_image))

app.mainloop()

演示视频展示了该异常表现。


内容的提问来源于stack exchange,提问作者Cyberin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 09:31:33