python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5動(dòng)態(tài)加載QSS樣式文件
在Qt中經(jīng)常需要使用樣式,為了降低耦合性(與邏輯代碼分離),我們通常會(huì)定義一個(gè)QSS文件,然后編寫(xiě)各種控件(QLabel,QLIneEdit,QPushButton等)的樣式,最后使用QApplication或QMainWindow來(lái)加載樣式,這樣就可以讓整個(gè)應(yīng)用程序共享一種樣式了
編寫(xiě)QSS
首先新建一個(gè)擴(kuò)展名為.qss的文件,如style.qss,然后將其加入資源文件(.qrc)中,在style.qss文件中編寫(xiě)樣式代碼,例如
QMainWindow{
border-image:url(./images/screen1.jpg);
}
QToolTip{
border: 1px solid rgb(45, 45, 45);
background: white;
color: red;
}
加載QSS
為了方便以后使用,可以編寫(xiě)一個(gè)公共類(lèi)COmmomHelper,其核心代碼如下
class CommonHelper:
def __init__(self):
pass
@staticmethod
def readQss(style):
with open(style, 'r') as f:
return f.read()
然后在主函數(shù)進(jìn)行加載,其核心代碼如下
app = QApplication(sys.argv) win = MainWindow() styleFile = './style.qss' qssStyle = CommonHelper.readQss(styleFile) win.setStyleSheet(qssStyle) win.show() sys.exit(app.exec_())
在換樣式時(shí),不需要全局修改,只需要CommomHelper.readQSS()讀取不同的QSS文件即可
完整代碼如下
注意第一步的qss文件的建立,下面會(huì)用到
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QVBoxLayout, QPushButton
class CommonHelper:
def __init__(self):
pass
@staticmethod
def readQss(style):
with open(style, 'r') as f:
return f.read()
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.resize(477, 258)
self.setWindowTitle("加載QSS文件")
btn1 = QPushButton(self)
btn1.setText('添加')
btn1.setToolTip('測(cè)試提示')
vbox = QVBoxLayout()
vbox.addWidget(btn1)
self.setLayout(vbox)
if __name__ == "__main__":
app = QApplication(sys.argv)
win = MainWindow()
styleFile = './style.qss'
qssStyle = CommonHelper.readQss(styleFile)
win.setStyleSheet(qssStyle)
win.show()
sys.exit(app.exec_())
沒(méi)有加載樣式時(shí),窗口樣式

加載樣式后,窗口樣式

本文介紹了如何在窗口運(yùn)行狀態(tài)下動(dòng)態(tài)加載QSS樣式文件改變窗口樣式,更多關(guān)于QSS樣式的文章請(qǐng)查看下面的相關(guān)鏈接
相關(guān)文章
TensorFlow實(shí)現(xiàn)模型斷點(diǎn)訓(xùn)練,checkpoint模型載入方式
這篇文章主要介紹了TensorFlow實(shí)現(xiàn)模型斷點(diǎn)訓(xùn)練,checkpoint模型載入方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05
詳解tensorflow載入數(shù)據(jù)的三種方式
這篇文章主要介紹了詳解tensorflow載入數(shù)據(jù)的三種方式,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
python爬蟲(chóng)基礎(chǔ)之urllib的使用
這篇文章主要介紹了python爬蟲(chóng)基礎(chǔ)之urllib的使用,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2020-12-12
編寫(xiě)同時(shí)兼容Python2.x與Python3.x版本的代碼的幾個(gè)示例
這篇文章主要介紹了編寫(xiě)同時(shí)兼容Python2.x與Python3.x版本的代碼的幾個(gè)示例,在Python2.7.x的更新中由于采用了某些Python3中的代碼編寫(xiě)特性、使得在有些原本不同之處編寫(xiě)兼容性代碼成為可能,需要的朋友可以參考下2015-03-03
Windows系統(tǒng)下使用flup搭建Nginx和Python環(huán)境的方法
這篇文章主要介紹了Windows系統(tǒng)下使用flup搭建Nginx和Python環(huán)境的方法,文中使用到了flup這個(gè)Python的FastCGI工具,需要的朋友可以參考下2015-12-12

