QSS

QSS(Qt Style Sheets)即PyQt样式表,是用来定义控件外观的一种机制。QSS内部实现大量参考了CSS,但是功能没有CSS强大,主要体现在选择器少,属性少等。

使用QSS

格式:控件.setStyleSheet(str)

说明:str表示QSS样式

例子:button.setStyleSheets('background-color: red')

QSS语法

基本规则

QSS文件由一系列的“属性:值”对,使用分号间隔,使用大括号将声明包括在内。

选择器

通配选择器:*,匹配所有的控件

类型选择器:QPushButton,匹配所有QPushButton类及其子类

属性选择器:QPushButton[name='myButton'],匹配所有name是myButton的QPushButton实例,匹配的属性可以是自定义属性

类选择器:.QPushButton,匹配所有QPushButton类实例,但是不匹配子类

ID选择器:#myButton,匹配所有ID是myButton的控件,ID指的是objectName,通过setObjectName方法设置

后代选择器:QDialog QPushButton,匹配QDialog中包含的QPushButton,不论是直接还是间接包含

子选择器:QDialog > QPushButton,匹配QDialog中包含的QPushButton,要求QPushButton的直接父容器时QDialog

子控件

子控件实际上也是一种选择器,主要应用在复合组件上,典型的就是QComboBox控件,如指定QComboBox中的下拉箭头为指定图片:

QComboBox::drop-down { image : url(xxx.png) }

伪状态

QSS伪状态是以冒汗开头的一个选择表达式,如:hover表示鼠标滑过时的状态。常用的伪状态有:hover checked

例子:设置按钮的背景为不同颜色

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton styleSheet = '''
#one {
background-color: red
} #two {
background-color: green
}
''' class MyWidget(QWidget):
def __init__(self):
super(MyWidget, self).__init__() self.button1 = QPushButton(self)
self.button1.setText('点我1')
self.button1.resize(100, 40)
self.button1.move(20, 20)
self.button1.setObjectName('one') self.button2 = QPushButton(self)
self.button2.setText('点我2')
self.button2.resize(100, 40)
self.button2.move(20, 80)
self.button2.setObjectName('two') if __name__ == '__main__':
app = QApplication(sys.argv)
w = MyWidget()
w.setStyleSheet(styleSheet)
w.resize(500, 300)
w.move(300, 300)
w.setWindowTitle('Simple')
w.show()
sys.exit(app.exec_())

注:除了自己编写样式外,网上有很多质量非常高的QSS样式,直接浏览下载就OK。

最新文章

  1. 异步与并行~List<T>是线程安全的吗?
  2. Android 天猫apk聊天数据库解密
  3. sublime下安装ctags
  4. 一步一步学swift之:自己写Api接口-PHP
  5. iOS - UIGestureRecognizer
  6. [ActionScript 3.0] AS3 绘制正四面体(线条)
  7. BLE 广播数据解析
  8. HDU 5046 Airport ( Dancing Links 反复覆盖 )
  9. ZigBee心电传输(二)
  10. iOS 判断设备是否越狱
  11. 临时笔记:flume+ CDH 的 twitter实例
  12. 利用C#轻松创建不规则窗体
  13. POJ 1654 Area
  14. 新鲜出炉的less与sass较量
  15. AngularJS学习篇(十五)
  16. mongodb 高级操作
  17. [安全转帖]浅析安全威胁情报共享框架OpenIOC
  18. 意外get接近完美的黑苹果 (UEFI + GPT)
  19. 史上最全 | 39个RNAseq分析工具与对比
  20. APP动态加载轮播图片

热门文章

  1. Linux下重新设置 MySQL 的密码
  2. PHP丨PHP基础知识之数据类型
  3. Mysql报错Error Code: 1175. You are using safe update
  4. 暑假集训Day2 互不侵犯(状压dp)
  5. git和github入门指南(2.2)
  6. js基础练习题(3)
  7. 使用 Nginx 部署静态页面
  8. Tomcat的启停脚本源码解析
  9. Meta标签大全_web开发常用meta整理
  10. day61 django入门(2)