我已经搜索了相当广泛,但没有找到答案。在
我已经找到并将我的问题归结为这个例子。在
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
。在
在meth()
内的paintGui()
只表示代码在工作,当obj.var
是{
我的问题是原来的窗户(它下面的那个)还是蓝色的。在
我可以把原来的窗户弄坏,留下新的,但那不应该是必要的。在
所以我有两个问题:
我试过after()
和{
我以为特金特被认为是个圈套。当我更改var
的值时,它是否应该循环并重新绘制屏幕并将obj.var == False
计算为True
?在
每次您调用
paintGui
,它都在创建一个全新的窗口。这是因为您正在调用Tk()
,创建新的小部件,并运行一个新的mainloop
。这些事情只需要发生一次,所以将它们从paintGui
函数中去掉。在这个修改最少的代码版本可以满足您的需要。在
相关问题 更多 >
编程相关推荐