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

Tkinter Canvas绘制矩形无法紧密贴合问题求助

Tkinter Canvas矩形消除间隙的解决方案

问题重现

尝试用Tkinter Canvas绘制铺满整个画布的矩形网格,但矩形之间出现明显黑色细缝,无法紧密贴合。

使用的代码如下:

import tkinter as tk

blocks = 10
block_size = 40
res = (block_size*blocks,)*2

class MainWindow(tk.Tk):
    def __init__(self):
        super().__init__()
        self.title('Main Window')
        self.geometry(f'{res[0]}x{res[1]}')
        self.c = tk.Canvas(self, width=res[0], height=res[1], highlightthickness=0, bg='black')
        self.c.pack()
        for row in range(blocks):
            for col in range(blocks):
                x = col*block_size
                y = row*block_size
                self.c.create_rectangle(x,y,x+block_size,y+block_size,fill='white')
        
if __name__ == "__main__":
    main = MainWindow()
    main.mainloop()

问题原因

Tkinter的create_rectangle方法默认会给矩形添加1px的黑色边框(outline),这些边框的绘制逻辑会让相邻矩形之间产生视觉上的间隙——即使画布背景为黑色,边框叠加区域也会呈现出细缝效果。

解决方法

只需在创建矩形时,通过参数消除边框的影响即可:

方法1:直接去掉边框

修改create_rectangle调用,添加outline=''参数:

self.c.create_rectangle(x,y,x+block_size,y+block_size,fill='white', outline='')

方法2:让边框颜色与填充色一致

如果后续需要保留边框功能(比如高亮选中矩形),可以将边框颜色设为和填充色相同:

self.c.create_rectangle(x,y,x+block_size,y+block_size,fill='white', outline='white')

修改后运行代码,矩形会紧密贴合,完全铺满画布,不再出现间隙。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 05:07:25