下面我将详细讲解Python中 PyQt5 库的多色边框进度条的使用攻略。
什么是多色边框进度条
多色边框进度条,顾名思义,就是在进度条的边框中使用了多种颜色的渐变效果,使进度条具有更好的视觉效果和美观度。
PyQt5中使用多色边框进度条的步骤
PyQt5中使用多色边框进度条的步骤如下:
- 在PyQt5中导入QProgressBar和QGradient类
- 创建
QProgressBar
进度条对象 - 将
QProgressBar
进度条对象设置为多色边框模式 - 使用
QGradient
类实现进度条的渐变效果,包括进度条前景颜色、进度条背景颜色及进度条边框颜色
以下是相应的Python代码示例:
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QPen, QColor, QLinearGradient
from PyQt5.QtCore import Qt
class ProgressBarDemo(QWidget):
def __init__(self, parent=None):
super(ProgressBarDemo, self).__init__(parent)
# 创建QProgressBar对象
self.progressBar = QProgressBar(self)
# 设置QProgressBar为多色边框模式
self.progressBar.setStyleSheet("""
QProgressBar{
border: 2px solid grey;
border-radius: 9px;
text-align: center;
margin: 0px;
height: 20px;
}
QProgressBar::chunk {
background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0.517, stop:0 rgba(0, 0, 0, 255), stop:0.5 rgba(255, 255, 255, 255), stop:1 rgba(0, 0, 0, 255))
border-radius: 7px;
}
""")
# 创建垂直布局管理器
self.vlayout = QVBoxLayout()
self.vlayout.addWidget(self.progressBar)
# 设置主布局管理器
self.setLayout(self.vlayout)
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = ProgressBarDemo()
demo.show()
sys.exit(app.exec_())
在示例中,我们使用 setStyleSheet()
方法将 QProgressBar
的样式设置为多色边框模式,并使用 QGradient
类实现进度条的渐变效果。你可以更改 qlineargradient
的参数来调整颜色渐变效果以及进度条的边框大小和样式。
具体使用示例
下面我们举两个具体的使用示例。
示例一:进度动态展示
很多情况下,如果您的操作耗时很长,你可能需要在期间展示进度,以便用户知道操作的进展情况。这时你可以使用多色边框进度条,示例如下:
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QPen, QColor, QLinearGradient
from PyQt5.QtCore import Qt, QThread, pyqtSignal
import time
class ProgressBarThread(QThread):
progressBarValue = pyqtSignal(int)
def run(self):
# 模拟任务操作
for i in range(1, 101):
time.sleep(0.1) # 延时操作
self.progressBarValue.emit(i)
class ProgressBarDemo(QWidget):
def __init__(self, parent=None):
super(ProgressBarDemo, self).__init__(parent)
# 创建QProgressBar对象
self.progressBar = QProgressBar(self)
# 设置QProgressBar为多色边框模式
self.progressBar.setStyleSheet("""
QProgressBar{
border: 2px solid grey;
border-radius: 9px;
text-align: center;
margin: 0px;
height: 20px;
}
QProgressBar::chunk {
background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0.517, stop:0 rgba(0, 0, 0, 255), stop:0.5 rgba(255, 255, 255, 255), stop:1 rgba(0, 0, 0, 255))
border-radius: 7px;
}
""")
# 创建按钮
self.button = QPushButton('开始', self)
self.button.clicked.connect(self.progressBarShow)
# 创建垂直布局管理器
self.vlayout = QVBoxLayout()
self.vlayout.addWidget(self.progressBar)
self.vlayout.addWidget(self.button)
# 设置主布局管理器
self.setLayout(self.vlayout)
def progressBarValueHandle(self, value):
self.progressBar.setValue(value)
def progressBarShow(self):
self.progressBar.reset()
# 初始化进度线程
self.progressBarThread = ProgressBarThread(self)
self.progressBarThread.progressBarValue.connect(self.progressBarValueHandle)
# 启动进度线程
self.progressBarThread.start()
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = ProgressBarDemo()
demo.show()
sys.exit(app.exec_())
在示例中,我们使用 ProgressBarThread
类实现了一个耗时模拟操作的多线程程序,并通过 QProgressBar
对象对耗时操作的进度进行动态展示。
示例二:自定义进度条样式
如果您对进度条的样式不满意,您可以自定义调整,在下面的示例中,我们实现了自定义进度条样式,并实现了条颜色的渐变,示例如下:
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QPen, QColor, QLinearGradient
from PyQt5.QtCore import Qt, QThread, pyqtSignal
import time
class ProgressBarThread(QThread):
progressBarValue = pyqtSignal(int)
def run(self):
# 模拟任务操作
for i in range(1, 101):
time.sleep(0.1) # 延时操作
self.progressBarValue.emit(i)
class ProgressBarDemo(QWidget):
def __init__(self, parent=None):
super(ProgressBarDemo, self).__init__(parent)
# 创建QProgressBar对象
self.progressBar = QProgressBar(self)
# 设置QProgressBar为多色边框模式
self.progressBar.setStyleSheet(f"""
QProgressBar{{
border: 2px solid gray;
border-radius: 8px;
background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0.618846, stop:0 rgba(172, 238, 93, 255), stop:1 rgba(207, 241, 128, 255));
color: white;
}}
QProgressBar::chunk{{
background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0.618846, stop:0 rgba(53, 254, 0, 255), stop:1 rgba(116, 249, 189, 255));
border-radius: 7px;
margin: 0.5px;
width: 5px;
}}
""")
# 创建按钮
self.button = QPushButton('开始', self)
self.button.clicked.connect(self.progressBarShow)
# 创建垂直布局管理器
self.vlayout = QVBoxLayout()
self.vlayout.addWidget(self.progressBar)
self.vlayout.addWidget(self.button)
# 设置主布局管理器
self.setLayout(self.vlayout)
def progressBarValueHandle(self, value):
self.progressBar.setValue(value)
def progressBarShow(self):
self.progressBar.reset()
# 初始化进度线程
self.progressBarThread = ProgressBarThread(self)
self.progressBarThread.progressBarValue.connect(self.progressBarValueHandle)
# 启动进度线程
self.progressBarThread.start()
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = ProgressBarDemo()
demo.show()
sys.exit(app.exec_())
在示例中,我们使用了 setStyleSheet()
方法自定义了进度条的外边框,背景颜色,前景条颜色等属性,您可以修改 setStyleSheet()
中的各个参数来自定义您想要的进度条样式。
这就是关于Python中 PyQt5 库的多色边框进度条的完整使用攻略。希望本文能够对您有所帮助。