Python Tkinter画布更新
问题描述:
我想更新python 2中Tkinter中的一个圆的颜色。我可以创建我的圆,但颜色不会在我的task()方法中更新,直到我停止运行该程序。 val
大于4时,如何才能更新颜色?Python Tkinter画布更新
from Tkinter import *
m = Tk()
w = Canvas(m, width = 100, height = 100)
w.pack()
cir = w.create_oval(50, 50, 100, 100)
def task():
while True:
val += 1
if val > 4:
w.itemconfig(cir, fill = "blue")
m.after(2000, task)
m.mainloop()
答
这将工作。
Like @ TigerhawkT3表示您需要休息才能退出循环。
from Tkinter import *
m = Tk()
w = Canvas(m, width = 100, height = 100)
w.pack()
cir = w.create_oval(50, 50, 100, 100)
def task():
val = 1
while True:
val += 1
if val > 4:
w.itemconfig(cir, fill = "blue")
#without the break task will run forever
break
m.after(2000, task)
m.mainloop()
+0
OP在一个现在被删除的答案中评论说,即使在改变填充颜色后,他也想继续递增'val'(虽然没有解释为什么)。 – TigerhawkT3
答
恐怕你不得不这么做,唯一的办法。 代码:
from tkinter import *
m = Tk()
c = Canvas(root, width=100, height=100)
c.pack()
v = 4
if v == 4:
v = 0
c.pack_forget()
del c
c = Canvas(root, width=100, height=100, bg='blue')
c.pack()
c.mainloop()
是否所有的用v变化(我还没有把在虽然)! 希望这有助于!
+0
等等,我不是说v,我的意思是val,对不起! – Guydangerous99
你有'while true:'没有'break'。你期望什么? – TigerhawkT3
我在第一次写错了代码,但即使使用此修补程序,它仍然不会更新颜色 – Brosten
您仍然有'while True:'没有'break'。再次,你期望什么? – TigerhawkT3