Können Sie die Attribute eines Python Canvas-Objekts nach der Erstellung ändern?

Ich versuche, eine amerikanische Ampel mit drei Kreisen auf einem Rechteck zu simulieren, die alle auf einer festgelegten Leinwand gezeichnet sind. Die Simulation soll "Animation" spiegeln, indem das angezeigte Licht alle 2 Sekunden in der folgenden Reihenfolge geändert wird: grün> gelb> rot> grün usw. für immer.

Die einzige Möglichkeit, die mir in den Sinn kommt, ist die Verwendung eines canvas.move (), canvas.after (), canvas.update () - Musters, um ein gefülltes ovales Objekt zu verschieben und jeweils einen nicht gefüllten Kreis zu überlagern. Ich habe die Logik verstanden, einen Kreis mit der richtigen Geschwindigkeit und in der richtigen Reihenfolge zu bewegen. Die Sache ist, ich instanziiere nur einen Kreis, der mit "Grün" gefüllt ist, aber ich kann ihn mit dieser Methode nicht in "Gelb" oder "Rot" ändern. Es scheint albern, canvas.delete ("filled") zu müssen und es alle 2 Sekunden an einer neuen Stelle mit einer anderen Füllung neu zu zeichnen, weil das für ein so einfaches Programm viel zu tun ist.

Frage 1: Gibt es eine Möglichkeit, die ich einfach ändern kann?fill Option für mein gefülltes Canvas-Objekt nach Belieben, mit einer Methode oder auf andere Weise?

Frage 2: Nähere ich mich diesem Szenario falsch? Gibt es eine bessere Möglichkeit, dies zu simulieren?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage