引言
我一个朋友说他在写PyQt5的时候,需要给一个QLable染成红色,想着和Tkinter一样用config(bg="red“)来做,结果根本没有。聪明人已经知道是QSS了,所以今天我们就给他上一节QSS课吧!
正文
基本格式
widget.setStyleSheet(stylesheet:str)
就是这样,里面的stylesheet就是QSS样式表,后面我们要讲的也是他。
样式表格式
普通
"background-color:#ff0000;"
这个样式表就是引言里我朋友需要的。分为三部分:头、尾、分号,头和尾之间要用冒号隔开。头就是对尾的诠释,这里的头是background-color,意思就是背景颜色。这里的尾是#ff0000,是红色的十六进制,所以尾表达的就是背景颜色是什么。最后一个是分号,别看这里只有一组,但是也要在结尾加分号,不然就报错!
多组
"background-color:#ff0000;border:1px solid black;"
这个样式表意思就是:背景颜色红色,边框(border)1像素(1px)、实线(solid)、黑色(black)。也挺简单的,就是把两个单组的拼在一起。不用多说了。
通配符选择器
window.setStyleSheet("*{background-color:red;}")
注意这里是把window这个窗口里所有widget统统变红。样式表的外围增加了一个*{}.
*是一个通配符选择器,意思就是把增加样式表的对象的所有childrenWidget都修改。
类型选择器
windou.setStyleSheet(QLable{background-color:red;})
这里是把window里所有QLable和它的childrenWidget变红。
相信你到这里已经明白了,选择器后面都是有{}的。
名称选择器
lbl = QLable(window)
lbl.setObjectName("lable")
window.setStyleSheet("#lable{background-color:red}")
我们先是创建了一个QLable,归属于window,然后给它setObjectName,也就是命名,命名为lable,最后给window设置样式表,意思是:叫lable的widget全部变红
多选择器
lbl = QLable(window)
lbl.setObjectName("lable")
btn = QPushButton(window)
window.setStyleSheet("#lable,QPushButton{background-color:red}")
差不多一目了然了吧?意思就是:叫lable的和所有QPushButton手下的,全部变红
.qss文件
这么多样式表,如果全部setStyleSheet太麻烦了,这时就可以创建.qss文件了。
假设有一个.qss文件,名为style.qss,内容如下:
*{
background-color:red;
}
QButton{
border:1px solid yellow;
}
还有一个a.py和style.qss在一个文件夹里,那么只要你在a.py里写入这几行代码,就能自动执行style.qss的所有内容:
with open('style.qss', 'r', encoding='utf-8') as f:
result = f.read()
window.setStyleSheet(result)
全文完