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
相关产品推荐
相关产品推荐

