gpt4 book ai didi

python - 在 Tkinter 后台运行无限循环

转载 作者:太空狗 更新时间:2023-10-30 02:05:39 25 4
gpt4 key购买 nike

我希望代码在后台运行并定期更新我的 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()

最佳答案

有点不清楚顶部的代码应该做什么,但是,如果您只想每秒调用一个函数(或每隔您想要的秒数),您可以使用 after方法。

所以,如果你只想用 textOne 做一些事情,你可能会做这样的事情:

...
textOne = Entry(self, width=2)
textOne.x = 0

def increment_textOne():
textOne.x += 1

# register "increment_textOne" to be called every 1 sec
self.after(1000, increment_textOne)

你可以使这个函数成为你类的方法(在本例中我称之为callback),你的代码将如下所示:

class Foo(Frame):

def __init__(self, master=None):
Frame.__init__(self, master)
self.x = 0
self.id = self.after(1000, self.callback)

def callback(self):
self.x += 1
print(self.x)
#You can cancel the call by doing "self.after_cancel(self.id)"
self.id = self.after(1000, self.callback)

gui = Foo()
gui.mainloop()

关于python - 在 Tkinter 后台运行无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10214701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com