Python GUI庫PyQt5樣式QSS子控件介紹
QSS子控件
QSS子控件實(shí)際上也是一種選擇器,其應(yīng)用在一些復(fù)合控件上,典型的如QComboBox,該控件的外觀是,有一個(gè)矩形的外邊框,右邊有一個(gè)下拉箭頭,點(diǎn)擊之后會(huì)彈出下拉列表,例如:
QComboBox:drop-down {image:url(dropdown.png)}
上面的樣式指定所有的QComboBox下拉箭頭的圖片是自定義的,圖片文件為dropdown.png
::drop-down子控件選擇器可以與上面提到到的選擇器一起聯(lián)合使用,例如
QComboBox#myQComboBox::drop-down {image:url(dropdown.png)}
表示為指定的id為myQComboBox的QComboBox控件的下拉箭頭自定義圖片,需要注意的是,子控件選擇器實(shí)際上是選擇復(fù)合控件的一部分,也就是對(duì)復(fù)合控件的一部分應(yīng)用樣式,例如為QComboBox下拉箭頭指定圖片,而不是QComboBox本身指定圖片
QSS偽狀態(tài)
QSS偽狀態(tài)選擇器是以冒號(hào)開頭的一個(gè)選擇表達(dá)式,例如hover,表示當(dāng)鼠標(biāo)指針經(jīng)過時(shí)的狀態(tài),偽狀態(tài)選擇器限制了當(dāng)控件處于某種狀態(tài)才可以使用的QSS規(guī)則,偽狀態(tài)只能描述一個(gè)控件或者一個(gè)復(fù)合控件的自控件的狀態(tài),所以它只能放在選擇器的最后面,例如
QComboBox:hover{background-color:red;}
表示到鼠標(biāo)經(jīng)過QComboBox時(shí).其背景色指定為紅色
該偽狀態(tài):hover描述的是QComboBox的狀態(tài),除可以描述所選擇的控件外,偽狀態(tài)還可以描述子控件選擇器所選擇的復(fù)合控件的子控件的狀態(tài)
QComboBox::drop-down:hover{background-color:red}
表示當(dāng)鼠標(biāo)指針經(jīng)過QComboBox的下拉箭頭時(shí),該下拉箭頭的背景色變成紅色
此外,偽狀態(tài)還可以用一個(gè)感嘆號(hào)來表示狀態(tài),例如,:hove表示鼠標(biāo)指針經(jīng)過的狀態(tài),:!hover表示鼠標(biāo)沒有經(jīng)過的狀態(tài),多種偽狀態(tài)可以同時(shí)使用,例如
QCheckBox:hover:checked{color:white}
表示當(dāng)鼠標(biāo)指針經(jīng)過一個(gè)選中的QCheckBox時(shí),設(shè)置其文字的前景色為白色
QSS提供了很多的偽狀態(tài),一些偽狀態(tài)只能用在特定的控件上,具體有哪些偽狀態(tài),在pyqt幫助文檔中有詳細(xì)的列表
實(shí)例:QComboBox的樣式
import sys from PyQt5.QtWidgets import * class WindowDemo(QWidget): def __init__(self): super(WindowDemo, self).__init__() self.initUI() def initUI(self): #實(shí)例化列表控件 combo=QComboBox(self) #設(shè)置列表控件的名稱 combo.setObjectName('myQComboBox') #添加條目到列表控件 combo.addItem('Window') combo.addItem('Ubuntu') combo.addItem('Red Hat') #控件移動(dòng)到指定位置 combo.move(50,50) #設(shè)置窗口的標(biāo)題與初始窗口的屬性 self.setGeometry(250,200,320,150) self.setWindowTitle('QComboBox樣式') #設(shè)置樣式 qssStyle=''' QComboBox#myQComboBox::drop-down{ image:url(./images/dropdown.png) } QComboBox#myQComboBox::drop-down:hover{ background-color:red } ''' self.setStyleSheet(qssStyle) if __name__ == '__main__': app=QApplication(sys.argv) win=WindowDemo() win.show() sys.exit(app.exec_())
運(yùn)行程序,運(yùn)行效果如下
QDarkStyleSheet樣式表
除自己編寫的QSS樣式表,網(wǎng)上還有很多質(zhì)量很高的QSS樣式表。比如QDarkStyleSheet,它是一個(gè)用于PyQt應(yīng)用程序的深黑色樣式表
安裝
pip install qdarkstyle
實(shí)例:QDarKStyleSheet的顯示界面
import logging import sys from PyQt5 import QtWidgets, QtCore # make the example runnable without the need to install from os.path import abspath, dirname sys.path.insert(0, abspath(dirname(abspath(__file__)) + '/..')) import qdarkstyle import ui.example_pyqt5_ui as example_ui def main(): """ Application entry point """ logging.basicConfig(level=logging.DEBUG) # create the application and the main window app = QtWidgets.QApplication(sys.argv) window = QtWidgets.QMainWindow() # setup ui ui = example_ui.Ui_MainWindow() ui.setupUi(window) ui.bt_delay_popup.addActions([ ui.actionAction, ui.actionAction_C ]) ui.bt_instant_popup.addActions([ ui.actionAction, ui.actionAction_C ]) ui.bt_menu_button_popup.addActions([ ui.actionAction, ui.actionAction_C ]) item = QtWidgets.QTableWidgetItem("Test") item.setCheckState(QtCore.Qt.Checked) ui.tableWidget.setItem(0, 0, item) window.setWindowTitle("QDarkStyle example") # tabify dock widgets to show bug #6 window.tabifyDockWidget(ui.dockWidget1, ui.dockWidget2) # setup stylesheet app.setStyleSheet(qdarkstyle.load_stylesheet_pyqt5()) # auto quit after 2s when testing on travis-ci if "--travis" in sys.argv: QtCore.QTimer.singleShot(2000, app.exit) # run window.show() app.exec_() if __name__ == "__main__": main()
運(yùn)行效果圖
如果你對(duì)PyQt5樣式QSS感興趣的話可以再看看《Python GUI庫PyQt5圖形和特效樣式QSS介紹》,更多關(guān)于Python GUI庫PyQt5樣式QSS的文章大家可以點(diǎn)擊下面的相關(guān)鏈接
相關(guān)文章
pandas中g(shù)roupby操作實(shí)現(xiàn)
本文主要介紹了pandas中g(shù)roupby操作實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02Python 日期時(shí)間datetime 加一天,減一天,加減一小時(shí)一分鐘,加減一年
這篇文章主要介紹了Python 日期時(shí)間datetime 加一天,減一天,加減一小時(shí)一分鐘,加減一年,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04基于Python實(shí)現(xiàn)自動(dòng)化生成數(shù)據(jù)報(bào)表
這篇文章主要介紹了如何使用Python自動(dòng)化生成數(shù)據(jù)報(bào)表,從而提高效率,再也不用一條條數(shù)據(jù)創(chuàng)建Excel數(shù)據(jù)報(bào)表了,感興趣的同學(xué)可以試一試2022-01-01在Django model中設(shè)置多個(gè)字段聯(lián)合唯一約束的實(shí)例
今天小編就為大家分享一篇在Django model中設(shè)置多個(gè)字段聯(lián)合唯一約束的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07python爬蟲框架Scrapy基本應(yīng)用學(xué)習(xí)教程
這篇文章主要為大家介紹了python爬蟲框架Scrapy的基本應(yīng)用學(xué)習(xí)教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-11-11python tkinter制作用戶登錄界面的簡單實(shí)現(xiàn)
這篇文章主要介紹了python tkinter制作用戶登錄界面的簡單實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04PyTorch之前向傳播函數(shù)forward用法解讀
這篇文章主要介紹了PyTorch之前向傳播函數(shù)forward用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09Python:__eq__和__str__函數(shù)的使用示例
這篇文章主要介紹了Python:__eq__和__str__函數(shù)的使用示例,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下2020-09-09