📅  最后修改于: 2023-12-03 15:18:47.242000             🧑  作者: Mango
在 PyQt5 中,我们可以使用 QProgressBar 实现进度条功能。默认情况下,进度条的边框是灰色的,但我们可以通过自定义样式来实现彩色边框。
我们可以通过设置进度条的样式表来改变边框颜色。样式表是一种用于设置控件外观的语言,类似于 CSS。以下是设置样式表的方法:
progress_bar = QProgressBar()
progress_bar.setStyleSheet("""
QProgressBar {
border: 2px solid gray;
border-radius: 5px;
text-align: center;
}
QProgressBar::chunk {
background-color: qlineargradient(x1:0, y1:0, x2:1, y2:1,
stop:0 #FF0050, stop:1 #FF50A8);
border-radius: 5px;
}
""")
上述代码中,我们设置了两个样式表:
QProgressBar
:设置了进度条的边框样式,包括颜色和圆角。QProgressBar::chunk
:设置了进度条已完成部分的样式,包括颜色和圆角。background-color
参数可以使用 qlineargradient
函数来实现渐变颜色。该函数有四个参数,分别为开始点坐标和结束点坐标的 X、Y 值。stop
参数表示渐变颜色的分界点,可以设置多个。
以下是一个完整的 PyQt5 程序,实现了一个带有彩色边框的进度条:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QProgressBar
from PyQt5.QtCore import QBasicTimer
from PyQt5.QtGui import QColor
class ProgressBar(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.progress_bar = QProgressBar()
self.timer = QBasicTimer()
self.step = 0
hbox = QHBoxLayout()
hbox.addWidget(self.progress_bar)
self.setLayout(hbox)
self.setWindowTitle('Progress Bar')
self.setGeometry(300, 300, 300, 50)
self.show()
def timerEvent(self, event):
if self.step >= 100:
self.timer.stop()
return
self.step += 1
self.progress_bar.setValue(self.step)
def start(self):
self.timer.start(100, self)
self.progress_bar.setMinimum(0)
self.progress_bar.setMaximum(0)
self.progress_bar.setTextVisible(False)
self.progress_bar.setFixedSize(300, 50)
self.progress_bar.setStyleSheet("""
QProgressBar {
border: 2px solid gray;
border-radius: 5px;
text-align: center;
}
QProgressBar::chunk {
background-color: qlineargradient(x1:0, y1:0, x2:1, y2:1,
stop:0 #FF0050, stop:1 #FF50A8);
border-radius: 5px;
}
""")
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = ProgressBar()
ex.start()
sys.exit(app.exec_())
该程序实现了一个带有彩色边框的进度条控件,并在启动时显示了一个动态增长的进度条。
以上便是本文介绍的内容,希望对大家有帮助。