显示繁忙progressBar用于长进程,没有线程

时间:2015-12-28 15:33:52

标签: python multithreading pyqt progress-bar

我正在编写一个PyQt GUI应用程序,我想为我的一个函数显示一个繁忙的进度条,这需要时间来完成。这是代码:

 wb.Document.InvokeScript("findString", new string[] { toWord });

目前,我尝试使用QTimer,但它不起作用。 CPU绑定功能是self.progress = QtGui.QProgressDialog("Canceling...", None, 0, 0, self) self.progress.setWindowTitle("Canceling refresh") self.progress.show() timer = QtCore.QTimer() timer.singleShot(0, self.loadNotifications) while timer.isActive(): app.processEvents()

我想在一个线程中启动它,当它正在运行时,更新QProgressBar。

我当然可以在函数loadNotifications周围创建一个QThread类,但是对于我想做的事情来说有点过分:在函数运行时只显示一个平滑的progressBar。

你有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我没有PyQT的经验,但在tkinter中,我通常通过让我的慢函数定期调用传递给它的一些update_progbar函数来实现这一点。然后,此update_progbar函数更新与慢函数相同的线程中的进度条(因此暂时保留)。

初​​步:

def update_progbar(prog):
    print(prog)

def slow_function(prog_func):
    for i in range(100000):
        if i%1000 == 0:
           prog_func(i / 100000.0)
        do_something()