QProgressDialog 进度对话框,向用户提示当前程序的进度信息,演示当前程序正在进行,向用户提供终止操作的机会。
from PyQt5.Qt import *
class MyWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('QProgressDialog')
self.resize(500,500)
self.iniUI()
def iniUI(self):
pd = QProgressDialog(self)
##########################默认情况下 四秒钟之后会自动弹出进度对话框,满值自动关闭
########################## 窗口级别的模态窗口open()弹出
pd.setValue(95)
pd.setMinimumDuration(1000) # 一秒钟之后自动弹出进度对话框
pd.setAutoClose(True) # 取消满值自动关闭(默认情况下满值自动重置 )
pd.setAutoReset(True) # 取消自动重置 (默认情况下满值自动重置 )
pd.setLabelText('当前进度的值')
pd.setCancelButtonText('用来取消按钮')
pd.setRange(0, 100) # 进度对话框的范围设定
##############################################进度条对话框 弹出方法
#
# 现在需求:
# 进度条对话框弹出方法 有两种
#
# 解决方法:
# 一.自动弹出,默认四秒钟之后自动弹出
# 二,调用 pd.open(func) func在进度对话框被取消时执行
pd.open(lambda :print('对话框被取消'))
#############################进度条对话框 弹出方法
##############################################进度对话框 构造函数
pd1 = QProgressDialog('当前进度值','取消按钮',0,100,self)
pd1.setLabelText('当前进度的值')
pd1.setCancelButtonText('用来取消按钮')
pd.setRange(0, 100) #进度对话框的范围设定
pd1.setValue(50)
pd1.move(pd.x(),pd.y()+200)
pd1.setMinimumDuration(1000)#一秒钟之后自动弹出
#############################进度对话框 构造函数
##############################################进度对话框 具体参数设定
#
# 现在需求:
# 实现进度对话框到达最大值之后自动关闭,
#
# 解决方法:
# 满足三点
# pd.value() == pd.maximum()
# pd.setAutoReset(True)
# pd.setAutoClose(True)
#
timer = QTimer(pd)
def progress_chg():
if pd.value()+1>=pd.maximum() or pd.wasCanceled():
timer.stop()
# 如果使用else语句 则到setValue(99) 时间就停止了,始终维持在99不变了
# else:
# pd.setValue(pd.value() + 1)
pd.setValue(pd.value() + 1)
timer.timeout.connect(progress_chg)
timer.start(1000) #每隔一秒发射一次信号
#############################进度对话框 具体参数设定
##############################################进度对话框 信号相关
#
#
#
pd.canceled.connect(lambda :print('进度对话框被取消'))
#############################进度对话框 信号相关
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
win = MyWindow()
win.show()
sys.exit(app.exec_())
来源:CSDN
作者:特仑苏牛奶好好喝
链接:https://blog.csdn.net/weixin_43717845/article/details/104267216