Можете ли вы изменить атрибуты объекта Python Canvas после создания?
Я пытаюсь смоделировать американский светофор, с 3 кругами на прямоугольнике, все нарисовано на наборе Canvas. Предполагается, что симуляция отражает "анимацию", изменяя, какой свет отображается каждые 2 секунды в следующем порядке: зеленый> желтый> красный> зеленый и т. Д. Навсегда.
Единственный способ сделать это - использовать шаблон canvas.move(), canvas.after(), canvas.update(), чтобы переместить заполненный овальный объект для наложения одного незаполненного круга за раз. Я получил логику, чтобы перемещать круг на правильной скорости и в правильном порядке. Дело в том, что я просто создаю экземпляр круга, заполненного "зеленым", но я не могу изменить его на "желтый" или "красный", используя этот метод. Кажется глупым иметь метод canvas.delete ("заполненный") и перерисовывать его в новом месте с разным заполнением каждые 2 секунды, потому что для такой простой программы многое нужно сделать.
Вопрос 1: Есть ли способ, которым я могу просто изменить fill
вариант для моего заполненного объекта Canvas по желанию, используя какой-либо метод или другие средства?
Вопрос 2: я неправильно подхожу к этому сценарию? Есть ли лучший способ симулировать это?
1 ответ
Да, вы должны иметь возможность изменять настройки холста с помощью config
,
Аналогично, используйте itemconfig
изменить элементы на холсте. Это требует, чтобы вы сохранили дескриптор элемента или отметили их.
Пример из tkinterbook:
i = w.create_line(xy, fill="red")
w.coords(i, new_xy) # change coordinates
w.itemconfig(i, fill="blue") # change color