从子例程更新进度条

2024-09-29 20:24:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我想更新一个进度条,我有一个主窗口的进度,我正在做的另一个子例程,这可能吗??在

为了尽可能清楚,我有两个文件:

在我的主窗口.py我要的是:

import Calculations

#some code
self.ui.progressBar
Calculations.longIteration("parameters")

然后我会有一个单独的文件用于计算:计算.py

^{pr2}$

有可能吗?在

还是应该换一种方式?在

谢谢。在


Tags: 文件进度条pyimportselfuicodesome
1条回答
网友
1楼 · 发布于 2024-09-29 20:24:53

最简单的方法是简单地传递GUI对象:

self.ui.progressBar
Calculations.longIteration("parameters", self.ui.progressBar)

并在Calculations上更新progressBar。不过,这有两个问题:

  • 您将GUI代码与Calculations混合在一起,而这些人可能根本不应该了解它
  • 如果longIteration是一个长时间运行的函数,顾名思义,那么您就阻塞了GUI主线程,这将使许多GUI框架不高兴(并且您的应用程序没有响应)。在

另一个解决方案是在线程中运行longIteration,并传递用于更新进度条的回调函数:

^{pr2}$

然后,在longIteration内,执行以下操作:

def longIteration( parameters, progress_callback ):
    #do your calculations
    progress_callback() #call the callback to notify of progress

显然,如果需要参数,可以修改progress_callback来获取参数

相关问题 更多 >

    热门问题