样式
控件样式设定,主要有两个方法
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_())