2024-09-29 20:24:53 发布
网友
我想更新一个进度条,我有一个主窗口的进度,我正在做的另一个子例程,这可能吗??在
为了尽可能清楚,我有两个文件:
在我的主窗口.py我要的是:
import Calculations #some code self.ui.progressBar Calculations.longIteration("parameters")
然后我会有一个单独的文件用于计算:计算.py
有可能吗?在
还是应该换一种方式?在
谢谢。在
最简单的方法是简单地传递GUI对象:
self.ui.progressBar Calculations.longIteration("parameters", self.ui.progressBar)
并在Calculations上更新progressBar。不过,这有两个问题:
Calculations
progressBar
longIteration
另一个解决方案是在线程中运行longIteration,并传递用于更新进度条的回调函数:
然后,在longIteration内,执行以下操作:
def longIteration( parameters, progress_callback ): #do your calculations progress_callback() #call the callback to notify of progress
显然,如果需要参数,可以修改progress_callback来获取参数
progress_callback
最简单的方法是简单地传递GUI对象:
并在
Calculations
上更新progressBar
。不过,这有两个问题:Calculations
混合在一起,而这些人可能根本不应该了解它longIteration
是一个长时间运行的函数,顾名思义,那么您就阻塞了GUI主线程,这将使许多GUI框架不高兴(并且您的应用程序没有响应)。在另一个解决方案是在线程中运行
^{pr2}$longIteration
,并传递用于更新进度条的回调函数:然后,在
longIteration
内,执行以下操作:显然,如果需要参数,可以修改
progress_callback
来获取参数相关问题 更多 >
编程相关推荐