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

Tkinter中canvas.coords()与canvas.moveto()坐标不匹配导致元素偏移的问题

Tkinter中canvas.coords()与canvas.moveto()坐标不匹配导致元素偏移的问题

最近我碰到了一个挺费解的Tkinter问题,写了一段在铺满窗口的画布上运行的脚本,代码如下:

import tkinter as tk
from PIL import Image, ImageTk
from time import sleep

root = tk.Tk()
root.geometry("500x500")
canvas = tk.Canvas(root)
canvas.pack()

def fill(event):
    canvas.config(width = root.winfo_width(), height = root.winfo_height())
root.bind("<Configure>", fill)

img = Image.open("CO2.png")
imgtk = ImageTk.PhotoImage(img)
item = canvas.create_image(15, 15, image = imgtk)
while True:
    canvas.moveto(item, canvas.coords(item)[0], canvas.coords(item)[1])
    root.update()
    sleep(0.5)

按逻辑来讲,这段代码应该完全不会有任何视觉变化——毕竟我是把画布上的图片元素移到它当前所在的位置啊!可实际运行起来却不是这样:图片会慢慢朝着x轴和y轴的正方向偏移,这就说明canvas.coords()返回的坐标值,和canvas.moveto()方法使用的坐标系统之间存在细微的偏差,两者并不完全对应。

我用到的是一张名为CO2.png的常规PNG图标。

备注:内容来源于stack exchange,提问作者willywillycow

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 11:19:31