tkinter canvas aktualisiert die Farbe nicht

Ich zeichne ein Oval in eine Leinwand, die perfekt funktioniert, auch wenn sie rot ist und die Schleifen auch gut laufen, weil ich den Druck sehen kann. Es soll die Farbe schon mal 1000ms ändern. Aber es ändert nicht die Farbe?

def draw_light(self):
        w = tk.Canvas(self.frame_Light)
        w.pack()
        w.create_oval(10, 10, 30, 30, fill="yellow", tags="light")

        if self.light_on:
            w.itemconfig("light", fill="blue")
            self.light_on = False
            print "on"
        else:
            w.itemconfig("light", fill="red")
            self.light_on = True
            print "of"

        self.app.after(1000, self.draw_light)

AKTUALISIEREN Wenn Sie den Code in Ihre Vorschläge ändern, wird nur die rote Leinwand generiert, auf der er sich befindet

def draw_light(self):
    self.ligth_canvas = tk.Canvas(self.frame_Light)
    self.ligth_canvas.pack()
    self.ligth_canvas.create_oval(10, 10, 30, 30, fill="yellow", tags="light")

    self.app.after(0, self.change_light)

def change_light(self):
    i = self.ligth_canvas.find_withtag("light")

    if self.light_on:
        self.ligth_canvas.itemconfig(i, fill="blue")
        self.light_on = False
        print "on"
    else:
        self.ligth_canvas.itemconfig(i, fill="red")
        self.light_on = True
        print "of"

    self.app.after(5000, self.change_light)

Antworten auf die Frage(2)

Ihre Antwort auf die Frage