QProgressDialog是PyQt5中用于展示进度条的控件,常用于展示长时间运行的任务的进度信息。其API包括以下内容:
- init(parent: QWidget = None, flags: Union[Qt.WindowFlags, Qt.WindowType] = Qt.WindowFlags()):创建一个QProgressDialog控件
- setLabelText(text: str):设置进度条对话框中的文本标签
- setMaximum(maximum: int):设置进度条的最大值
- setMinimum(minimum: int):设置进度条的最小值
- setRange(minimum: int, maximum: int):同时设置进度条的最小值和最大值
- setValue(progress: int):设置进度条的当前值
- setWindowModality(modality: Union[Qt.WindowModality, Qt.WindowModalityFlag]):设置进度条对话框的模态方式
- setWindowTitle(title: str):设置进度条对话框的标题
- wasCanceled() -> bool:判断用户是否取消了进度条对话框
以下是一个演示程序,其中包含了上述API的使用:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QProgressDialog
class Example(QWidget):
def __init__(self):
super().__init__()
# 设置窗口标题和大小
self.setWindowTitle('QProgressDialog Example')
self.resize(400, 300)
# 创建按钮并设置点击事件
btn = QPushButton('Show Progress', self)
btn.move(150, 100)
btn.clicked.connect(self.show_progress)
def show_progress(self):
# 创建QProgressDialog控件并设置属性
progress = QProgressDialog('Progress', 'Cancel', 0, 100, self)
progress.setWindowTitle('Progress Dialog')
progress.setWindowModality(True)
# 设置进度条更新的间隔时间(默认为0,即实时更新)
progress.setWindowFlags(progress.windowFlags() | Qt.CustomizeWindowHint)
progress.setWindowFlags(progress.windowFlags() & ~Qt.WindowCloseButtonHint)
progress.setMinimumDuration(0)
# 开始模拟长时间运行的任务并更新进度条
for i in range(101):
progress.setValue(i)
if progress.wasCanceled():
break
def closeEvent(self, event):
# 关闭窗口时关闭所有对话框
for dialog in QApplication.topLevelWidgets():
if isinstance(dialog, QProgressDialog):
dialog.close()
event.accept()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
ex.show()
sys.exit(app.exec_())
在上述演示程序中,我们创建了一个QWidget,在QWidget中添加了一个QPushButton控件,点击按钮时会创建并展示一个QProgressDialog控件,并使用上述API中的多个方法,设置了进度条对话框的标题、文本标签、最小值、最大值、模态对话框等属性,并在进度条对话框中模拟了长时间运行的任务,并更新进度条。
最后,我们使用QApplication和sys模块来创建并运行应用程序。运行上述演示程序,可以看到一个窗口中展示了一个按钮,点击按钮后会弹出一个进度条对话框,进度条会从0%到100%进行更新,直到任务完成或者用户点击了取消按钮。在关闭程序时,我们通过重写closeEvent()方法,关闭所有打开的对话框,确保程序关闭时不会有未关闭的对话框。