📜  PyQt5 – 将皮肤设置为进度条(1)

📅  最后修改于: 2023-12-03 15:04:00.315000             🧑  作者: Mango

PyQt5 – 设置进度条样式

PyQt5是一个Python GUI库,它提供了丰富的GUI组件并支持Windows、Linux、Mac OS等多种操作系统。在PyQt5中,进度条(QProgressBar)是一个常用的GUI组件,它用于显示进度情况。

在本文中,我们将介绍如何将进度条的样式设置为我们想要的样式,而不仅仅是默认的矩形形状。

步骤

首先,我们需要导入PyQt5库和必要的类。

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

接下来,我们将创建一个空的窗口,并在其中添加一个进度条。

class Window(QWidget):
 
    def __init__(self):
        super().__init__()
 
        # 设置窗口的大小和标题
        self.setGeometry(50, 50, 500, 300)
        self.setWindowTitle("PyQt5 Progress Bar")
 
        # 创建进度条实例
        self.progress = QProgressBar(self)
        self.progress.setGeometry(50, 50, 400, 30)

现在,我们可以使用setStyleSheet()方法来设置进度条的样式。Qt样式表提供了丰富的函数来修改组件的外观。

下面是一个简单的例子,将进度条的样式设置为圆形样式。

# 设置圆形进度条样式
self.progress.setStyleSheet("""
    QProgressBar {
        border: 2px solid grey;
        border-radius: 10px;
        text-align: center
    }
    QProgressBar::chunk {
        background-color: #CD96CD;
        width: 10px;
        margin: 0.5px;
        border-radius: 5px;
    }
""")

首先,我们为进度条设置一个灰色的边框。border-radius属性设置边框的圆角半径,使进度条呈现圆形外观。

然后,我们为进度条的进度块设置一个特定的背景颜色,以及块的宽度、边距和圆角半径(5px)。

另外,我们还可以使用palette()方法来更改进度条的背景颜色和前景色。

# 设置进度条的背景和前景色
palette = QPalette()
palette.setColor(QPalette.Highlight, QColor(138, 43, 226))
palette.setColor(QPalette.Base, Qt.white)
self.progress.setPalette(palette)

在这个例子中,我们将进度条的背景色设置为白色(Base)和前景色设置为紫色(Highlight)。

最后,我们需要在窗口中显示进度条。

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())
完整代码
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPalette, QColor
from PyQt5.QtWidgets import QApplication, QWidget, QProgressBar
 
class Window(QWidget):
 
    def __init__(self):
        super().__init__()
 
        # 设置窗口的大小和标题
        self.setGeometry(50, 50, 500, 300)
        self.setWindowTitle("PyQt5 Progress Bar")
 
        # 创建进度条实例
        self.progress = QProgressBar(self)
        self.progress.setGeometry(50, 50, 400, 30)
 
        # 设置圆形进度条样式
        self.progress.setStyleSheet("""
            QProgressBar {
                border: 2px solid grey;
                border-radius: 10px;
                text-align: center
            }
            QProgressBar::chunk {
                background-color: #CD96CD;
                width: 10px;
                margin: 0.5px;
                border-radius: 5px;
            }
        """)
 
        # 设置进度条的背景和前景色
        palette = QPalette()
        palette.setColor(QPalette.Highlight, QColor(138, 43, 226))
        palette.setColor(QPalette.Base, Qt.white)
        self.progress.setPalette(palette)
 
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())
结论

在这篇文章中,我们介绍了如何使用PyQt5将进度条样式设置为我们想要的样式。我们使用了Qt样式表来更改进度条的外观,包括形状、颜色和背景。通过使用这些技术,我们可以创建出更漂亮、更有吸引力的用户界面。