为什么Tkinter在绘图时擦除以前的矩形?

时间:2011-06-13 15:39:50

标签: python drawing tkinter

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

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 个答案:

答案 0 :(得分:4)

rectangle大纲的默认颜色为black。这使得当它们的轮廓刚刚重叠时,似乎没有绘制其他矩形。

尝试更改:

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')

不确定这是否正是您正在寻找的,希望它有所帮助。