PyQt5-如何用qss文件设置控件样式

 时间:2024-10-19 13:58:00

qss文件的创建,设置控件的样式的几种形式。

1.qss文件的创建

1、控件的样式设置:setStyleSheet(str)用来设置控件的样式,参数是字符串类型,格式是(属性名:值;)多个属性和值要用分号分梯瓣氨割开;def test_01(self): lab=QLabel(self) lab.setGeometry(20,20,310,50) lab.setText('高楼万丈平地起') lab.setStyleSheet('background-color:red;' 'font-size:40px;' 'color:yellow')上例中样式表中的参数修饰了lab的样式。

PyQt5-如何用qss文件设置控件样式

2、因为样式表内容多,而且很多控件都使用相同的样式,为了方便管理及使用,就将样式表与代码分离开,使用的时候调用即可方法就是创建qss文件样式表。创建后缀为.qss的文件:选择认为方便的路径存放,如果qss文件不是在本工作目录下,应提供绝对路径。

PyQt5-如何用qss文件设置控件样式

2.qss-选择器

1、qss选择器的设置:1)qss文件的内容是有花括号{}括起来的setStlyeSheet()的字符串参数。2)qss文件可以写多个类型的控件样式,故此每个样式应在花括号前加选择器。3)选择器就是控件的类名,例如:QLabel { background-color:red; font-size:40px; color:yellow;}为了看起来清晰,故每个属性可以换行缩进。

PyQt5-如何用qss文件设置控件样式

2、qss文件的读取:1)用读取文件的步铿溘老呻骤来获取文件内容:with open('Qobj.qss', 'r') as f:f.read()2)吹涡皋陕用全局的应用程序对象qApp调用setStyleSheet(),把读到的文件内容做参数。例如:with open('Qobj.qss', 'r') as f: qApp.setStyleSheet(f.read())此时所有QLabel类控件都会是一样的样式

PyQt5-如何用qss文件设置控件样式

3.qss-ID选择器

1、假如上例中需要再藜局腑载添加一个标签,同样是QLabel控件,而不想使用选择器的样式,这时就用到ID选择器。这里涉及到一个知识点就是QObject对象的一个方法,setObjectName(),看下面的链接。这个设置的名字就可以作为一个ID。因为QObject类是控件类的基类,所以,用setObjectName()也可以给QLabel等这样的控件设置对象名(也就是ID)。例如:lab1 = QLabel(self)lab1.setGeometry(20, 20, 310, 50)lab1.setText('高楼万丈平地起')lab1.setObjectName('Normal')意思就是把具有同样控件类型且有相同样式的控件设置为相同的ID,而不需要样式的相同类型的控件不设置相同的ID,或不设置ID。

PyQt5-如何用qss文件设置控件样式

2、qss文件内写法:在选择器后面加#ID,即可。此时具有相同ID的同类控件就有了相同的样式。QLabel#Normal{ background-color:red; font-size:40px; color:yellow;}

PyQt5-如何用qss文件设置控件样式

4.qss-属性选择器

1、同样涉及到QOject基类的一个方法setProperty(),为控件设置属性:lab1 = QLabel(self)lab1.setGeometry(20, 20, 310, 50)lab1.setText('高楼万丈平地起')lab1.setObjectName('Normal')lab1.setProperty('level','small')

PyQt5-如何用qss文件设置控件样式

2、在qss文件里的写法是,在ID名字后面用中括号[]包裹属性的名字=用引号包括的值:例如:QLabel#Normal[level="small"]{ background-color:green; font-size:10px; color:yellow;}

PyQt5-如何用qss文件设置控件样式

3、这样就把相同类型和相同ID的控件加以区分。

PyQt5-如何用qss文件设置控件样式

关键点:

1、掌握QObject类的方法。为控件设置ID,和属性。qss文件的写法。要和代码中选择器,id, 属性对应。qss文件的读取。用全局程序对象调用setStyleSheet(),参数是读取的内容。

  • 如何配置IntelliJ IDEA 2019的匹配大小写开关
  • 将vs2013程序转换为vs 2010
  • Vcenter怎样克隆
  • MyEclipse没有出现包
  • message found under code for locale 'zh_CN'
  • 热门搜索
    成语故事手抄报 杰出人物手抄报 禁毒手抄报资料 快乐阅读手抄报 健康手抄报图片大全 英语圣诞节手抄报 爱我家乡手抄报 感恩教师节手抄报大全 绿色生活手抄报 狼王梦手抄报