Python 如何在长时间运行的任务上更改QPushButton的文本,并在任务完成时更改回?

Python 如何在长时间运行的任务上更改QPushButton的文本,并在任务完成时更改回?,python,pyqt,pyqt4,Python,Pyqt,Pyqt4,我有一些这样的代码: class MyApp(Ui_MainWindow): def __init__(self): pass def setupUi(self, *args): super(MyApp, self).setupUi(*args) QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL(_fromUtf8("clicked()")), self.doCheck)

我有一些这样的代码:

class MyApp(Ui_MainWindow):
    def __init__(self):
        pass

    def setupUi(self, *args):
        super(MyApp, self).setupUi(*args)
        QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL(_fromUtf8("clicked()")), self.doCheck)

    def doCheck(self):
        self.pushButton.setText(QtGui.QApplication.translate("MainWindow", "Checking...", None, QtGui.QApplication.UnicodeUTF8))
        # Code to do real checking here... (it's a network app)
        # When check done, display result in a "QTextBrowser" 
        # ....
        # Change text of Button to "Done!"
        self.pushButton.setText(QtGui.QApplication.translate("MainWindow", "Done!", None, QtGui.QApplication.UnicodeUTF8))
但结果并不像我预期的那样。
我的应用程序进行网络检查并显示结果正常,但检查开始时按钮没有将文本更改为“检查…”;当一切都完成时,只需将文本更改为“完成!”

更改按钮标签后,应运行
QApplication::processEvents()
以使用新标签更新UI


请注意,当长任务运行时,UI将被冻结。为了避免这种情况,您有时应该在长时间操作期间调用
QApplication::processEvents()
,或者在单独的
QThread

中运行此操作,它可以工作!你真棒。我也认为它可以用QThread完成,我试过了,但是很难。你知道一些关于它的好文档吗?非常感谢;DI只能建议您阅读。