QSS基礎-設置控件樣式

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_())

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_())

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_())

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_())

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
}





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章