我正在使用Python3和Tkinter构建GUI。我有一个正在运行一段时间的函数,然后返回一个元组。在运行时,GUI冻结。我想避免这种情况,并显示进度条(充满后会重复显示)。我四处搜寻并获得了一些帮助,但是,我很难将所有部分放在一起。因此,作为一种方案,事情应该像这样:
进度条有效,我从书中获得了代码,请参阅:
p = ProgressDialog(master = parent, text = "", title = "Operation running")
def _do_progress():
i = 1
while True:
time.sleep(0.03)
p.set_progress(i*10)
if i < 10:
i += 0.05
else:
i = 0
p.done(0)
如您所见,此进度条将一直运行到某个时间点被杀死为止。我知道我需要线程模块来这样做。有人可以给我一个提示,让我知道如何构造程序吗?非常感谢。
编辑:
因此,首先,这里是一个使用线程的示例。让我们暂时忽略加载栏,仅关注主线程问题。
def runboot(data, CONFIG):
qq = mp.Queue()
t = mp.Process(target = bc.multiboot, args = (qq, data, functouse))
t.start()
results = qq.get(True)
t.join()
showresults(results)
最后显示正确的结果,但是GUI仍然冻结。为什么?我将主要任务发送到新线程吗?