PyQt5是一个用于创建GUI程序的Python工具集,其中包含了多种控件,例如进度条。此外,为了满足GUI设计的需求,PyQt5还内置了一些主题和皮肤,可由用户自定义。以下是针对进度条如何设置皮肤的完整使用攻略。
1. 导入PyQt5模块
在导入模块前,需要先安装PyQt5。可以使用pip安装:
pip install pyqt5
导入PyQt5模块的常规方式如下:
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
以上语句导入了PyQt5中的用于显示GUI的部分widgets和GUI的部分graphics。
2. 创建和设置进度条
在创建进度条前,先设置一些必要的外观属性。以下是两个示例:
示例1:创建一个样式为QStyleFactory中第3个皮肤的横向进度条
progressbar = QProgressBar()
progressbar.setGeometry(50, 50, 200, 25)
progressbar.setOrientation(Qt.Horizontal)
progressbar.setStyleSheet(QStyleFactory.create('WindowsVista').make_stylesheet())
在这个示例中:
-
setGeometry()
用于设置进度条的位置和大小; -
setOrientation()
用于设置进度条的方向,Qt.Horizontal表示横向进度条,Qt.Vertical表示纵向进度条; -
setStyleSheet()
用于设置进度条的样式,其中QStyleFactory.create()
返回的是以某个模板为基础的皮肤,make_stylesheet()
则可以把返回的皮肤设置成CSS。
示例2:创建一个样式为Windows Vista的圆形进度条
progressbar = QProgressBar()
progressbar.setGeometry(50, 50, 100, 100)
progressbar.setOrientation(Qt.Vertical)
progressbar.setObjectName("myRoundProgressBar")
progressbar.setStyleSheet("""
QProgressBar#myRoundProgressBar {
border: 2px solid grey;
border-radius: 50px;
background-color: white;
}
QProgressBar#myRoundProgressBar::chunk {
background-color: #05B8CC;
border-radius: 50px;
}
""")
在这个示例中:
-
setObjectName()
用于设置控件的名称,在CSS样式表中使用; -
setStyleSheet()
中的CSS样式表定义了进度条的一些基础特性,如背景、边框等; -
chunk
则是进度条的颜色块,用来展现当前进度。
3. 运行程序
在运行程序前,需要先将控件放入GUI中。这里假设我们已经通过 QWidget()
创建了一个窗口。
window = QWidget()
window.setGeometry(400, 400, 300, 200)
window.setLayout(QVBoxLayout())
window.layout().addWidget(progressbar) # 将进度条加入窗口
window.show()
-
QVBoxLayout()
用于创建一个垂直盒子容器,把进度条放入里面; -
window.layout()
用于获取窗口中的布局管理器,再通过addWidget()
加入控件。
运行程序即可看到设置好皮肤的进度条。