Создание фона из прямоугольников с помощью tkinter? - PullRequest
1 голос
/ 24 апреля 2020

Я пытался создать программу, которая бы рисовала мне случайную картинку из заполненных прямоугольников с помощью tkinter. Я хотел протестировать его с набором оттенков серого, для этого я составил список из 13 шестнадцатеричных строк, которые будут вызываться случайным образом во время рисования на холсте tkinter.

Я пытался создайте 2d массив с двумя плохо спроектированными циклами и для каждого пикселя создайте прямоугольник. Проблема в том, что после довольно долгого времени я получаю черный экран, состоящий из нескольких черных прямоугольников, я полагаю. Может быть, моя переменная, которая содержит выбранный цвет, не подходит для tkinter в color = '...'.

Я поместил здесь код, чтобы сделать его нестабильным, извините для моего английского sh;)

root=Tk()

colorlist = ['#000000', '#111111', '#222222', '#333333', '#444444', '#555555', '#666666', '#777777', '#888888', '#999999', '#bfbfbf', '#dedede', '#ffffff']

canevas = Canvas(root, width=1920, height=1080)
canevas.pack()

for i in range(1920):
    for j in range(1080):
        ind = randint(0, 12)
        ccolor = colorlist[ind]
        canevas.create_rectangle(i, j, i+1, j+1, fill=ccolor)

root.mainloop()

1 Ответ

1 голос
/ 24 апреля 2020

Прямоугольники имеют контур, который по умолчанию черный. Если вы пытаетесь создать однопиксельный прямоугольник, вам нужно установить ширину контура на ноль с помощью опции width. В противном случае все, что вы увидите в однопиксельном прямоугольнике, это однопиксельный контур.

canevas.create_rectangle(i, j, i+1, j+1, fill=ccolor, width=0)

Кстати, вместо вычисления индекса по вашим цветам вы можете использовать random.choice.

import random
...
ccolor = random.choice(colorlist)
canevas.create_rectangle(i, j, i+1, j+1, fill=ccolor, width=0)
...