一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Python GUI庫PyQt5樣式QSS子控件介紹

 wenxuefeng360 2022-07-18 發(fā)布于四川

QSS子控件

QSS子控件實(shí)際上也是一種選擇器,其應(yīng)用在一些復(fù)合控件上,典型的如QComboBox,該控件的外觀是,有一個(gè)矩形的外邊框,右邊有一個(gè)下拉箭頭,點(diǎn)擊之后會彈出下拉列表,例如:

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ù)合控件的一部分,也就是對復(fù)合控件的一部分應(yīng)用樣式,例如為QComboBox下拉箭頭指定圖片,而不是QComboBox本身指定圖片

QSS偽狀態(tài)

QSS偽狀態(tài)選擇器是以冒號開頭的一個(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è)感嘆號來表示狀態(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的樣式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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的顯示界面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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)行效果圖

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    欧美日韩精品久久亚洲区熟妇人| 久久综合狠狠综合久久综合| 午夜免费精品视频在线看| 大香蕉伊人一区二区三区| 无套内射美女视频免费在线观看 | 色婷婷亚洲精品综合网| 午夜色午夜视频之日本| 日韩免费av一区二区三区| 国产精品白丝一区二区| 亚洲精品小视频在线观看| 日本加勒比在线观看不卡| 99精品人妻少妇一区二区人人妻| 好吊妞视频免费在线观看| 国产又大又黄又粗又免费| 欧美成人欧美一级乱黄| 99久久精品久久免费| 日本加勒比在线播放一区| 韩国激情野战视频在线播放| 日韩精品视频高清在线观看| 亚洲天堂久久精品成人| 国产传媒一区二区三区| 欧美激情视频一区二区三区| 亚洲一区二区精品免费视频| 亚洲一级二级三级精品| 欧美日韩综合在线精品| 亚洲视频一区自拍偷拍另类| 午夜激情视频一区二区| 欧洲精品一区二区三区四区| 国产成人免费激情视频| 欧美日韩中国性生活视频| 国产二级一级内射视频播放| 日本欧美在线一区二区三区| 日韩一级毛一欧美一级乱| 日本午夜免费啪视频在线| 亚洲精选91福利在线观看| 国产精品免费自拍视频| 欧美国产日本免费不卡| 日韩欧美黄色一级视频| 国产av一二三区在线观看| 亚洲一区二区三区四区性色av| 开心激情网 激情五月天|