私は楕円形をキャンバスに描きます。これは完璧に機能し、赤も表示され、ループも正常に実行されるため、印刷が表示されます。1000msごとに色が変わるはずです。しかし、それは色を変えませんか?
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)
UPDATE はコードをあなたの提案に変更しましたが、それでも赤いキャンバスだけが生成されます
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)