Почему Tkinter стирает предыдущие прямоугольники при рисовании? - PullRequest
3 голосов
/ 13 июня 2011

Когда я рисую прямоугольник в глобальной области видимости:

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 голосов
/ 13 июня 2011

Цвет по умолчанию для контура 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')

Не уверен, что это именно то, что вы ищете, надеюсь, это поможет.

...