在Python中(在tkinter GUI中),使用ttk.Progressbar,我试图在按下按钮时显示进度条。
单击GUI上的“Analyse”按钮会调用脚本中的analyze函数,该函数被设计为类似于三阶火箭:
grid() 进度条小部件以将其添加到主框架中,并启动它。
执行实际计算(在我的测试运行中需要大约三秒钟)
stop() 进度条并用grid_remove() 将其隐藏,因为任务已完成。
如果注释掉步骤3,则进度条将按预期显示和启动,同时执行步骤2。但是,如果步骤三仍然存在,则首先不会显示进度条。由于步骤二中的工作无论如何都会执行,因此我认为这可能与在同一函数调用中对进度条小部件进行网格化和删除有关。但由于这是我在Python中的第一个真正的GUI项目,因此我有点迷茫,不知道如何解决这个问题(如果确实是问题)。
是否有一种方法可以绕过此问题或更优雅地完成相同的任务?按钮调用的函数如下:
def analyze():
# --Step 1--
progressbar.grid()
progressbar.start()
# --Step 2--
global analysis
analysis = analyzer.Analysis(file_path.get())
analysis.output_to_file()
# --Step 3--
progressbar.stop()
progressbar.grid_remove()
我希望能够通过贴出我界面的图片来更加清晰地解释,但由于我的声望分数目前不允许发布图片,所以我希望通过我的解释(和代码)已经足够清楚地说明了问题。