1
我已經搜索了相當廣泛的,並沒有找到答案。如何更新Tkinter窗口的屏幕(畫布)
我已經查明並減少了我的問題到這個例子。
from Tkinter import *
class A:
def __init__(self):
self.var = True
obj = A()
def meth():
obj.var = False
paintGui()
def paintGui():
master = Tk()
w = Canvas(master, width=200, height=100)
w.pack()
w.create_rectangle(50, 25, 150, 75, fill="blue", tags="rect")
btn = Button(master, text="Cerrar Mesa",command=meth)
btn.pack(side=BOTTOM)
if obj.var == False:
w.itemconfig("rect", fill="red")
mainloop()
paintGui()
正如你所看到的矩形有一個條件itemconfig
。
線paintGui()
內meth()
只是表明該代碼工作,當obj.var
是False
則轉向紅色。
我的問題是,原來的窗口(它下面的那個窗口)仍然是藍色的。
我可以殺死原來的窗口並離開新窗口,但這不應該是必要的。
所以我有2個問題:
- 我如何解決這個問題?
我試過after()
和update_idletaskes
但他們似乎沒有工作,雖然我可能使用不正確。
- 這裏有什麼問題?
我說tkinter被置於循環中。當我更改var
的值時,不應該循環並重新繪製屏幕並將obj.var == False
評估爲True
?
非常感謝。這幾乎解決了它。 +1並接受答案! – Trufa