python GUI庫圖形界面開發(fā)之PyQt5動(dòng)態(tài)加載QSS樣式文件
在Qt中經(jīng)常需要使用樣式,為了降低耦合性(與邏輯代碼分離),我們通常會(huì)定義一個(gè)QSS文件,然后編寫各種控件(QLabel,QLIneEdit,QPushButton等)的樣式,最后使用QApplication或QMainWindow來加載樣式,這樣就可以讓整個(gè)應(yīng)用程序共享一種樣式了
編寫QSS
首先新建一個(gè)擴(kuò)展名為.qss的文件,如style.qss,然后將其加入資源文件(.qrc)中,在style.qss文件中編寫樣式代碼,例如
QMainWindow{
border-image:url(./images/screen1.jpg);
}
QToolTip{
border: 1px solid rgb(45, 45, 45);
background: white;
color: red;
}
加載QSS
為了方便以后使用,可以編寫一個(gè)公共類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('測試提示')
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_())
沒有加載樣式時(shí),窗口樣式

加載樣式后,窗口樣式

本文介紹了如何在窗口運(yùn)行狀態(tài)下動(dòng)態(tài)加載QSS樣式文件改變窗口樣式,更多關(guān)于QSS樣式的文章請查看下面的相關(guān)鏈接
相關(guān)文章
TensorFlow實(shí)現(xiàn)模型斷點(diǎn)訓(xùn)練,checkpoint模型載入方式
這篇文章主要介紹了TensorFlow實(shí)現(xiàn)模型斷點(diǎn)訓(xùn)練,checkpoint模型載入方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05
詳解tensorflow載入數(shù)據(jù)的三種方式
這篇文章主要介紹了詳解tensorflow載入數(shù)據(jù)的三種方式,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-04-04
編寫同時(shí)兼容Python2.x與Python3.x版本的代碼的幾個(gè)示例
這篇文章主要介紹了編寫同時(shí)兼容Python2.x與Python3.x版本的代碼的幾個(gè)示例,在Python2.7.x的更新中由于采用了某些Python3中的代碼編寫特性、使得在有些原本不同之處編寫兼容性代碼成為可能,需要的朋友可以參考下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

