QSS基础-设置控件样式

摘要:
1.QSS基础-设置类似控件的样式“QSS基础:QtStyleSheetQt样式表用于设置控件的样式和样式(例如控件的背景色、字体颜色、字体大小等)。功能与CSS相似。功能类似。“”从PyQt5.Qt重新导入*从PyQt5.QtGuidimport*从PyQt5.QtWidgetsimport*importsysclassBasicQSS(QWidget):def
1、QSS基础-设置同类控件样式
'''
QSS基础:Qt Style Sheet
Qt样式表
用于设置控件的样式和风格(比如控件的背景色,字体颜色,字体大小等)
和CSS的功能比较相似,功能相似
'''

from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *


import sys
class BasicQSS(QWidget):
def __init__(self):
super(BasicQSS,self).__init__()
self.setWindowTitle("QSS控件设置样式基础")
self.b1=QPushButton("按钮1")
self.b2=QPushButton("按钮2")

VBox=QVBoxLayout()
VBox.addWidget(self.b1)
VBox.addWidget(self.b2)
self.setLayout(VBox)

if __name__=="__main__":
app=QApplication(sys.argv)
p=BasicQSS()
#定义所有button控件的样式背景色为红色
#也可以称为控件选择器
qssStyle='''
QPushButton{
  background-color:red
  }
'''
    p.setStyleSheet(qssStyle)
p.show()
sys.exit(app.exec_())

QSS基础-设置控件样式第1张

2、QSS选择器设置特定控件样式
'''
QSS基础:Qt Style Sheet
设置某些特定的控件样式
'''

from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

import sys
class QSSselector(QWidget):
def __init__(self):
super(QSSselector,self).__init__()
self.setWindowTitle("QSS选择器设置特定控件样式")
self.b1=QPushButton("按钮1")
self.b2=QPushButton("按钮2")
self.b3=QPushButton("按钮3")

#设置控件2的属性,通过属性来进行特定设置样式
self.b1.setProperty("name","bt1")
self.b2.setProperty("name", "bt2")

VBox=QVBoxLayout()
VBox.addWidget(self.b1)
VBox.addWidget(self.b2)
VBox.addWidget(self.b3)
self.setLayout(VBox)

if __name__=="__main__":
app=QApplication(sys.argv)
p=QSSselector()

#控件选择器设置特定控件的属性
qssStyle='''
QPushButton[name="bt2"]{

color:yellow;
height:120;
font-size:60px
}
QPushButton[name="bt1"]{

color:black;
height:60;
font-size:30px
}
'''
p.setStyleSheet(qssStyle)
p.show()
sys.exit(app.exec_())

QSS基础-设置控件样式第2张

3、QSS子控件选择器
'''
举例:QComboBox 选择主控件的子控件样式-即一部分组成
'''

from PyQt5.QtWidgets import *
import sys
class QSSselector(QWidget):
def __init__(self):
super(QSSselector,self).__init__()
self.setWindowTitle("QSS子控件选择器")
combox=QComboBox(self)

#设置下拉列表的控件名称
combox.setObjectName("myComboBox")

combox.addItem("Windows")
combox.addItem("Linux")
combox.addItem("Mac OS X")

combox.move(50,50)
self.setGeometry(250,200,320,150)

if __name__=="__main__":
app=QApplication(sys.argv)
p=QSSselector()

#子控件选择器设置下来箭头的图像形式
qssStyle='''
QComboBox#myComboBox::drop-down{
image:url(./image/1.png)
}
'''
p.setStyleSheet(qssStyle)
p.show()
sys.exit(app.exec_())

QSS基础-设置控件样式第3张

4、QSS设置方法为标签和按钮添加背景图
'''
使用Qss设定标签和按钮的背景图
'''

from PyQt5.QtWidgets import *
import sys

class labelback(QWidget):
def __init__(self):
super(labelback,self).__init__()
self.setWindowTitle("设置标签背景图")
self.resize(512,288)

label=QLabel(self)
label.setToolTip("这是一个文本标签")
#为label添加背景图
label.setStyleSheet("QLabel{border-image:url(./image/1.png);}")
label.setFixedWidth(400) #设置最大宽度
label.setFixedHeight(200)

b1=QPushButton(self)
b1.setObjectName("b1")
b1.setMaximumSize(100,100) #设置最大宽度与最高宽度
b1.setMinimumSize(48,48)

#为button设置背景图(b1为显示背景图,b1:Pressed是指按下时图片)
style='''
#b1{
border-radius:4px;
background-image:url("./image/0.jpg");
}
#b1:Pressed{
background-image:url("./image/1.png");
}
'''
b1.setStyleSheet(style)

v=QVBoxLayout()
v.addWidget(label)
v.addWidget(b1)
v.addStretch() #添加一下拉伸,随着两控件的大小来进行基于左上角自动伸缩
self.setLayout(v)

if __name__=="__main__":
app=QApplication(sys.argv)
p=labelback()
p.show()
sys.exit(app.exec_())

QSS基础-设置控件样式第4张

5、装载QSS文件
'''
在PyQt5中动态装载CSS文件
'''
from PyQt5.QtWidgets import *
import sys

#定义动态读取qss文件类
class common:
@staticmethod
def readQSS(style):
with open(style,"r") as f:
return f.read()

class main(QMainWindow):

def __init__(self):
super(main,self).__init__()
self.setWindowTitle("动态加载QSS文件")
self.resize(477,258)
b1=QPushButton("装载QSS文件按钮")
b1.setToolTip("提示文本")
v=QVBoxLayout()
v.addWidget(b1)
b1.clicked.connect(self.onclick)
self.setLayout(v)

w=QWidget(self)
self.setCentralWidget(w)
w.setLayout(v)

def onclick(self):
stylefile="./style.qss" #本地QSS文件
c=common()
qssstyle=c.readQSS(stylefile)
p.setStyleSheet(qssstyle)

if __name__=="__main__":
app=QApplication(sys.argv)
p=main()
p.show()
sys.exit(app.exec_())
#本地QSS文件style.qss文件代码
QMainWindow{
border-image:url(./image/1.png);
}
QToolTip{
border:1px solid rgb(45,45,45);
background:white;
color:red
}

QSS基础-设置控件样式第5张





免责声明:文章转载自《QSS基础-设置控件样式》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇全网最详细的最新稳定OSSEC搭建部署(ossec-server(CentOS7.X)和ossec-agent(CentOS7.X))(图文详解)【原生】CocosCreator Android和游戏的通讯 (Java和TS互相调用、传递JSON数据、监听返回键)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C#将jpg格式图片合成到bmp格式图片中

         在C#中,有时为解决几个图片显示的问题,比如有一张背景图,还有一直是要显示在背景图上的图片,如何能将这2张图片合成一张图片显示呢? 下面的例子提供了这样一个解决的方法,代码如下: //strwinepath酒的图片 //strBackPic 背景图片 private void TestPaint(string strwinepath,st...

antd中,popover 不同情境下设置不同背景图,无法设置className的情况

这次项目有一个需求,就是右上角一个 气泡弹窗 popover ,当会员状态是已过期的时候,背景图成白色渐变,如果是未过期,就是黑色渐变。 于是就想通过设置不同的 status 值来添加不同的 className , 以设置.ant-popover-inner 的样式来设置背景图, 当然,这样做有一个不完美的就是不能一步到位的全部改变,需要手动更改 .ant...

css精灵

css精灵,也叫css sprite,css雪碧图,是背景图的技术,因为如今的网速是很快的,下载一张图片用的时间很少,所以服务器的连接数是现在最珍贵的资源,连接数是有限的,所以通常将网页中一些小图片放在一张大图片中,一次性进行下载,再通过移动背景图的位置,在需要的地方显示对应的图片的位置。(由于移动的是背景图的位置,所以使用css精灵时位置值一般都是负数,...

vue 内联样式style中的background

转载:点击查看原文 在我们使用vue开发的时候 有很多时候我们需要用到背景图(特别是这个背景图是变量时) 这个时候会直接使用 内联样式 直接把你拿到的数据拼接上去 注意 在vue中直接使用style时 花括号一定别忘记 还有就是你的url一定要加引号拼接 :style = ' { backgroundImage : " url ( " + item.i...

Unity+NGUI多分辨率适配方案

  说起unity的适配方案,网上可谓是一查一大堆,但是真正要应用到项目中的时候,总会出现各式各样的问题。由于最近自己要做一个小游戏,在开始做游戏之前,就想着先好好搞一搞适配这块,以后新起项目的时候也会用得着。 NGUI应该是现在大部分开发者都会去选择的UI插件,虽然NGUI还存在着不少问题,像是相对来说,NGUI还是比较靠谱的,所以这里只是针对NGUI做...

解决Activity启动黑屏及设置android:windowIsTranslucent不兼容activity切换动画问题

项目中遇到打开Activity后黑屏的问题,网上找到解决办法是通过设置theme和style属性可以实现 之前在做 APP 的时候不太关注这个问题,因为自己在使用其他 APP 的时候也会在应用启动的初始有一个黑屏闪过后才会出现应用的欢迎页。直到最近开发过程中发现自己在欢迎页启动的线程由于请求和处理的数据量过大而,导致欢迎页在出现之前界面上会有一个短暂的白色...