我希望代码在后台运行并定期更新我的GUI。我怎样才能做到这一点?
例如,假设我想在GUI代码的后台执行类似的操作,您可以看到如下:
x = 0
while True:
print(x)
x = x + 1
time.sleep(1)
这是GUI代码:
class GUIFramework(Frame):
def __init__(self,master=None):
Frame.__init__(self,master)
self.master.title("Volume Monitor")
self.grid(padx=10, pady=10,sticky=N+S+E+W)
self.CreateWidgets()
def CreateWidgets(self):
textOne = Entry(self, width=2)
textOne.grid(row=1, column=0)
listbox = Listbox(self,relief=SUNKEN)
listbox.grid(row=5,rowspan=2,column=0,columnspan=4,sticky=N+W+S+E,pady=5)
listbox.insert(END,"This is an alert message.")
if __name__ == "__main__":
guiFrame = GUIFramework()
guiFrame.mainloop()
现在还不清楚顶部的代码应该做什么,但是,如果您只想每秒(或每秒钟)调用一个函数,那么可以使用^{} 方法。
所以,如果你只是想用
textOne
做点什么,你可能会做如下事情:您可以将此函数设为类的方法(在本例中,我将其称为
callback
),您的代码如下所示:如果你真的想运行一个独特的无限循环,你别无选择,只能使用一个单独的线程,并通过线程安全队列进行通信。但是,除非在非常不寻常的情况下,否则您不应该运行无限循环。毕竟,您已经有一个无限循环在运行:事件循环。所以,当你说你想要一个无限循环时,你实际上是在问如何在无限循环中做一个无限循环。
@mgilson给出了一个很好的例子,说明如何使用
after
来实现这一点,在尝试使用线程之前,您应该考虑尝试使用它。线程使你想要的成为可能,但它也使你的代码变得相当复杂。相关问题 更多 >
编程相关推荐