我有一些类似的代码:
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))
但结果并不如我所料。 我的应用程序进行网络检查并显示结果正常,但检查开始时按钮没有将文本更改为“正在检查...”;它只是将文字改为“完成!”一切都结束了!
答案 0 :(得分:2)
更改按钮标签后,您应该运行QApplication::processEvents()
以使用新标签更新UI。
请注意,在长任务运行时,您的UI将被冻结。为避免这种情况,有时您应该在长时间操作期间调用QApplication::processEvents()
,或者在单独的QThread
中运行此操作。