PyQt6基础_QProgressDialog
目录
描述
代码&演示
场景一:显示进度条,不能执行其他操作
场景二:显示进度条,其他操作正常进行
描述
两种场景
1 显示进度条,不能执行其他操作。应用于串行的任务,就是前一个任务没完成就无法进行下一步。
2 显示进度条,其他操作正常进行。应用于并行,任务彼此不互相影响。
代码&演示
场景一:显示进度条,不能执行其他操作
class TempWidget(QWidget):def __init__(self):super().__init__()self.label = QLabel()btn = QPushButton('哈哈',clicked=self.btn_clicked)btn00 = QPushButton('关闭',clicked=self.btn_clicked00)layout = QVBoxLayout()layout.addWidget(self.label)layout.addWidget(btn)layout.addWidget(btn00)self.setLayout(layout)passdef btn_clicked(self):self.progress = QProgressDialog('正在查询...',None,0,0,self)self.progress.setWindowFlags(self.progress.windowFlags() & ~Qt.WindowType.WindowCloseButtonHint)self.progress.setWindowModality(Qt.WindowModality.WindowModal)# self.progress.setWindowModality(Qt.WindowModality.NonModal)self.progress.show()self.steps = 0self.t = QTimer()self.t.timeout.connect(self.t_timeout)self.t.start(1000) # 每1000毫秒触发一次passdef btn_clicked00(self):self.t.stop()self.progress.cancel()passdef t_timeout(self):self.label.setText(str(self.steps))self.steps +=1if self.steps >=10:self.t.stop()self.progress.cancel()pass
在运行过程中,“关闭”按钮无法操作。当任务(定时器走10次)完成,进度框自动关闭。
场景二:显示进度条,其他操作正常进行
self.progress.setWindowModality(Qt.WindowModality.NonModal)
将 setWindowModality 值设置为非模式
进度条运行时,“关闭”按钮可以操作