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只能建议您阅读。