为什么Tkinter绘制时会擦除之前的矩形?

3 投票
1 回答
520 浏览
提问于 2025-04-16 19:28

当我在全局范围内画一个矩形时:

c = Canvas(width=IMAGE_WIDTH, height=IMAGE_HEIGHT, bg='black') 
c.create_rectangle([100, 100, 110, 110], fill='white')
c.pack()
root = Tk() 

然后我在一个循环中画多个矩形

class gDrawer :
    def __init__(self) :
        self.rect_array = []
        self.x = 0
        self.y = 0

    def incr_counter(self,c,event=None): 
        one_pixel_loc = [self.x, self.y, self.x+5, self.y+5]
        self.rect_array.append(c.create_rectangle(one_pixel_loc, fill='white'))
        self.x += 1

gd = gDrawer()

for xx in range(100) :
    print xx
    gd.incr_counter(c)

root.mainloop()

我发现那个单独画的矩形会留在画布上,而循环中画的矩形却在移动,而不是留下一个个的矩形轨迹。我想要的是留下矩形的轨迹,而不是一个移动的矩形,这到底是怎么回事呢?

1 个回答

4

矩形的默认边框颜色是黑色。这就导致其他矩形看起来好像没有被画出来,其实只是它们的边框重叠在一起了。

试着把:

self.rect_array.append(c.create_rectangle(one_pixel_loc, fill='white'))

改成这样:

self.rect_array.append(c.create_rectangle(one_pixel_loc, fill='white', outline='white')

不确定这是不是你想要的,希望能帮到你。

撰写回答