为什么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 个回答
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')
不确定这是不是你想要的,希望能帮到你。