【发布时间】:2019-07-23 19:37:14
【问题描述】:
我正在开发一个需要使用 QProgressBar 让用户了解进度的应用程序。但是,我不想在步骤中更新进度条,而是使用 setMaximum(0) 在进度条上显示“忙碌”指示器并更新 QLabel 以显示当前阶段。我这样做是为了让一切变得简单。
这里有一个模拟 UI 来简化解释。
这是对应的代码:
class TestWindow(QMainWindow):
def __init__(self):
super().__init__()
relpath = 'ui/test.ui'
uifile = join(dirname(sys.argv[0]), relpath)
uic.loadUi(uifile, self)
self.pushButton.clicked.connect(self.start_updating)
def start_updating(self):
self.progressBar.setMaximum(0)
self.label.setText("Func 1")
sleep(3) # in real app do something here
self.label.setText("Func 2")
sleep(3) # in real app do something else here
self.label.setText("Func 3")
if __name__ == "__main__":
app = QApplication(sys.argv)
window = TestWindow()
window.show()
sys.exit(app.exec_())
如果我运行它,那么只会显示 QLabel 的最后一个状态(“Func 3”),并且在最后一次更新标签文本之前,进度条上不会显示“忙碌”模式。谁能帮我理解为什么这不起作用以及是否有更好的方法来定期更新标签?
【问题讨论】:
标签: python python-3.x pyqt pyqt5