PyQt5 – 如何改变进度条的样式和大小

  • Post category:Python

关于“PyQt5 – 如何改变进度条的样式和大小”的完整使用攻略,我会按照以下几个方面进行讲解。

简介

PyQt是PyQt5模块中的一个控件,可用于显示任务的进度。进度条本质上是水平或垂直的矩形条形图,表示任务的进度百分比。可以使用PyQt5中的QProgressBar类来构建进度条。

改变进度条大小和样式

更改进度条样式

PyQt5提供了多种进度条样式,包括QProgressBar样式表。在样式表中使用css格式即可改变进度条的样式,在 QFile 或 Qt Resource 中以 CSS 格式保存样式表,然后通过 setStyleSheet() 函数将样式表应用到 ProgressBar 控件上即可。

例如,以下代码改变进度条的颜色和整体样式:

from PyQt5.QtGui import QPalette
from PyQt5.QtCore import Qt

progressBar = QProgressBar(self)
progressBar.setGeometry(30, 40, 200, 25)  # 设置进度条大小、位置
palette = progressBar.palette()
textColor = Qt.white
palette.setColor(QPalette.Highlight, Qt.green)  # 更改进度条的颜色
palette.setColor(QPalette.Base, Qt.gray)  # 更改进度条的外框颜色
progressBar.setPalette(palette)

更改进度条大小

可以通过 setFixedWidth()setFixedHeight() 函数改变进度条的宽度和高度,例如以下代码:

progressBar = QProgressBar(self)
progressBar.setFixedWidth(500)  # 更改进度条宽度
progressBar.setFixedHeight(10)  # 更改进度条高度

示例说明

以下是两个简单的进度条应用示例,以说明如何改变进度条的大小和样式。

示例1:应用样式表改变进度条样式

from PyQt5.QtWidgets import QApplication, QProgressBar, QWidget
from PyQt5.QtGui import QPalette
from PyQt5.QtCore import Qt


class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        progressBar = QProgressBar(self)
        progressBar.setGeometry(30, 40, 200, 25)
        palette = progressBar.palette()
        textColor = Qt.white
        palette.setColor(QPalette.Highlight, Qt.green)
        palette.setColor(QPalette.Base, Qt.gray)
        progressBar.setStackedBackgroundRole(textColor)
        progressBar.setAutoFillBackground(True)
        progressBar.setPalette(palette)
        self.setGeometry(300, 300, 280, 170)
        self.setWindowTitle('进度条')
        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

运行上述程序,会显示一个绿色进度条。

示例2:应用 setFixedWidth()setFixedHeight() 函数改变进度条大小

from PyQt5.QtWidgets import QApplication, QProgressBar, QWidget


class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        progressBar = QProgressBar(self)
        progressBar.setFixedWidth(500)
        progressBar.setFixedHeight(10)
        progressBar.setGeometry(30, 40, 500, 25)

        self.setGeometry(300, 300, 280, 170)
        self.setWindowTitle('进度条')
        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

运行上述程序,会显示一个宽度为500、高度为10的进度条。