控件样式设定,主要有两个方法
1) 控件对象调用setStyleSheet()方法
2) 通过QSS文件设定样式
setStyleSheet()语法
<控件对象>.setStyleSheet("<样式配置>") 使用示例
label = QLabel(window)
label.setStyleSheet("font-size:50px;color:red;")
QSS文件
QSS称为Qt Style Sheets也就是Qt样式表,它是Qt提供的一种用来自定义控件外观的机制
QSS大量参考了CSS的内容,只不过QSS的功能比CSS要弱很多,体现在选择器要少
可以使用的QSS属性也要少很多,并且并不是所有的属性都可以用在Qt的所有控件上
QSS文件里,各个花括号对应的样式是与控件类型,及控件对应属性值一一对应的
如果一个控件对应多个样式,则更细粒度的样式会覆盖掉其他粒度大的样式
使用示例
qss_study.qss
//适用于控件是QLabel,objectName是notice的控件
QLabel#notice {
font-size:10px;
color:gray;
border:1px solid gray;
border-radius:8px;
}
//适用于控件是QLabel,objectName是notice,且其属性notice_level的值是normal的控件
//color会取green,而不是gray
QLabel#notice[notice_level="normal"] {
color:green;
border-color:green;
}
//适用于控件是QLabel,objectName是notice,且其属性notice_level的值是warning的控件
//color会取yellow,而不是gray
QLabel#notice[notice_level="warning"] {
color:yellow;
border-color:yellow;
}
//适用于控件是QLabel,objectName是notice,且其属性notice_level的值是error的控件
//color会取red,而不是gray
QLabel#notice[notice_level="error"] {
color:red;
border-color:red;
}
pyqt.py
# -*- coding: utf-8 -*-
"""..."""
__author__ = 'liye'
#引入包
from PyQt5.Qt import *
import sys
app = QApplication(sys.argv) #创建一个应用程序对象
#控件控操作
window = QWidget()
window.setWindowTitle("我的第一个GUI")
window.resize(500, 500)
window.move(400,200)
with open("study.qss", "r") as f:
qApp.setStyleSheet(f.read())
label1 = QLabel(window) #
label1.setText("this is normal")
label1.setObjectName("notice")
label1.setProperty("notice_level","normal")
label2 = QLabel(window) #
label2.setText("this is warning")
label2.setObjectName("notice")
label2.setProperty("notice_level","warning")
label2.move(10, 10)
label3 = QLabel(window) #
label3.setText("this is error")
label3.setObjectName("notice")
label3.setProperty("notice_level", "error")
label3.move(20, 20)
button = QPushButton(window) #qss文件的样式不适用与该组件,因为qss文件里没有定义QPushButton组件的样式
button.setText("这是个按钮")
button.setObjectName("notice")
button.move(30, 30)
window.show()
sys.exit(app.exec_())
2776

被折叠的 条评论
为什么被折叠?



