一、什么是QSS
Qt样式表(QSS) 是一种针对 Qt 库的另外一种语言,它允许用户为 Qt 程序自定义其样式。QSS 是由 CSS 2.1 规范实现的一种层级样式表语言,Qt 类可以通过 QSS 控制其样式,从而定义它们的外观和行为。QSS 继承了 CSS 2.1 规范的所有特性,并增加了一些面向 Qt 类的子集。因此,如果你熟悉 CSS,你就可以很快地学会 QSS。
二、如何使用QSS
QSS 可以用代码、样式表文件或者 qss 文件来设置。代码设置的方式如下:
from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * app = QApplication([]) win = QWidget() style = """ QWidget{ background-color: #333; } """ win.setStyleSheet(style) win.show() app.exec_()
其中,setStyleSheet() 函数就是用来设置样式的。将要设置的样式定义在 style 变量中,再调用 setStyleSheet() 函数设置即可。
样式表文件的使用方法:
#样式文件(style.qss) QWidget{ background-color: #333; } #主程序 from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * app = QApplication([]) win = QWidget() win.setStyleSheet(open("style.qss","r").read()) win.show() app.exec_()
注意: 路径可以根据实际情况进行更改。
三、QSS基本功能
1. 控件类型
QSS 可以针对不同的控件类型设置不同样式。其中有一些常用的控件类型:
- QWidget
- QLabel
- QPushButton
- QCheckBox
- QRadioButton
- QGroupBox
- QLineEdit
- QTextEdit
下面是一个利用 QSS 设置控件的背景颜色的示例:
#设定类型为 QPushButton 的背景颜色 QPushButton{ background-color: #cfcfcf; }
2. 其它属性
控件类型的属性可以在 QSS 中进行设置,比如 background-color、color、font-size、padding 等等。
下面是一个利用 QSS 设置 QPushButton 的边框样式的示例:
#设置按钮外边框样式 QPushButton{ border: 3px solid #222; border-radius: 5px; }
3. 伪状态(Pseudo-States)
在Qt中有三个常用的伪状态:checked、hover、disabled。
下面是一个 QCheckBox 的示例:
#设置QCheckBox处于未勾选时的样式 QCheckBox{ background-color: #444; color: #fff; } #设置QCheckBox处于勾选时的样式 QCheckBox:checked{ background-color: #222; color: #fff; }
四、QSS实战用例
1. 制作勾选框样式
QCheckBox{ margin: 5px; padding: 5px; border: 1px solid gray; } QCheckBox::indicator{ width: 20px; height: 20px; } QCheckBox::indicator::unchecked{ image: url(:/unchecked.png); } QCheckBox::indicator::checked{ image: url(:/checked.png); }
2. 制作按钮样式
QPushButton{ background: white; border: 3px solid #222; color: #222; font-size: 20px; padding: 5px; border-radius: 5px; min-width: 100px; } QPushButton:hover{ background: #222; color: #fff; }
3. 制作滚动条样式
先定义滚动条的样式:
QScrollBar:vertical { background:#fff; width:16px; margin:0px 0px 0px 0px; border: 1px solid #ddd; padding-left:1px; } QScrollBar::handle:vertical { background-color: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #ccc, stop:0.5 #aaa, stop:1 #ccc); min-height: 0px; border-radius: 8px; } QScrollBar::add-line:vertical { height: 0px; subcontrol-position: bottom; subcontrol-origin: margin; } QScrollBar::sub-line:vertical { height: 0 px; subcontrol-position: top; subcontrol-origin: margin; } QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { background:#f2f2f2; }
然后使用样式表将其应用于需要使用的控件中:
#应用样式 QTreeView::verticalScrollBar{ background-color: #fff; width: 16px; margin: 0px 0px 0px 0px; border: 1px solid #ddd; } QTreeView::handle:vertical { background-color: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #ccc, stop:0.5 #aaa, stop:1 #ccc); min-height: 0px; border-radius: 8px; } QTreeView::add-line:vertical { height: 0px; subcontrol-position: bottom; subcontrol-origin: margin; } QTreeView::sub-line:vertical { height: 0px; subcontrol-position: top; subcontrol-origin: margin; } QTreeView::add-page:vertical,QTreeView::sub-page:vertical { background-color: #f2f2f2; }
五、总结
本文通过不同方面的示例,详细阐述了 PyQt5 QSS 的基本用法,让读者更好的掌握如何使用 QSS 对 PyQt5 应用进行样式定制。希望读者在实践中,可以对 QSS 的使用更加熟练,并且可以根据自己的需求,制作出更加自己喜欢的应用风格。