#python #drawing #tkinter
#python #рисование #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:
По умолчанию для контура a 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')
Не уверен, что это именно то, что вы ищете, надеюсь, это поможет.
Комментарии:
1. Я хочу иметь твоих детей! На самом деле оказалось, что, поскольку я только сдвигал «пиксель» на меньший, чем размер контура, каждый раз, когда я перерисовывал следующий пиксель, он закрывал предыдущий черным контуром.