Управление отдельными цветами пикселей в виджете Tkinter Canvas - PullRequest
1 голос
/ 30 января 2011

Я бы хотел иметь возможность изменять цвет отдельных пикселей в виджете холста Tkinter.

Моя первая попытка - я создал много линейных объектов и сделал их пикселями.

self.Ca мой виджет Canvas

сниппет:

i0 = 0
while i0 < height:
    i1 = 0
    while i1 < width:
        pix = self.Ca.create_line(i1, i0, i1+1, i0, fill=self.Hex, width=1)
        self.matrix.append(pix)
        i1 = i1 + 1
    i0 = i0 + 1

Хотя это работает, оно пожирает ресурсы. После того, как виджет становится намного больше, чем 100X100, производительность быстро падает.

Есть ли лучший способ?

Ответы [ 2 ]

1 голос
/ 30 января 2011

Вместо использования холста, начните с чистого изображения соответствующего размера. Вы можете довольно легко манипулировать отдельными пикселями изображения, хотя вы теряете способность рисовать такие объекты, как линии, круги и т. Д.

Суть в том, что холст не предназначен для работы с отдельными пикселями.

0 голосов
/ 08 сентября 2017

Вы также можете работать с прямоугольниками ... чтобы нарисовать прямоугольник на пикселе x, y

canvas.create_rectangle(x,y,x+1,y+1,fill="red")

Но, конечно, это не самое эффективное ...

...