点击此处浏览总目录

样式

 

控件样式设定,主要有两个方法

  1)  控件对象调用setStyleSheet()方法

  2)  通过QSS文件设定样式

 

setStyleSheet()
  语法
    <控件对象>.setStyleSheet("<样式配置>")

  使用示例

label = QLabel(window)
label.setStyleSheet("font-size:50px;color:red;")

 

QSS文件

  QSS称为Qt Style Sheets也就是Qt样式表,它是Qt提供的一种用来自定义控件外观的机制
  QSS大量参考了CSS的内容,只不过QSS的功能比CSS要弱很多,体现在选择器要少
  可以使用的QSS属性也要少很多,并且并不是所有的属性都可以用在Qt的所有控件上

  QSS文件里,各个花括号对应的样式是与控件类型,及控件对应属性值一一对应的
  如果一个控件对应多个样式,则更细粒度的样式会覆盖掉其他粒度大的样式

使用示例

  qss_study.qss

//适用于控件是QLabel,objectName是notice的控件
QLabel#notice {
    font-size:10px;
    color:gray;
    border:1px solid gray;
    border-radius:8px;
}

//适用于控件是QLabel,objectName是notice,且其属性notice_level的值是normal的控件
//color会取green,而不是gray
QLabel#notice[notice_level="normal"] { 
    color:green;
    border-color:green;
}

//适用于控件是QLabel,objectName是notice,且其属性notice_level的值是warning的控件
//color会取yellow,而不是gray
QLabel#notice[notice_level="warning"] {
    color:yellow;
    border-color:yellow;
}

//适用于控件是QLabel,objectName是notice,且其属性notice_level的值是error的控件
//color会取red,而不是gray
QLabel#notice[notice_level="error"] {
    color:red;
    border-color:red;
}

   pyqt.py

# -*- coding: utf-8 -*-
"""..."""

__author__ = 'liye'

#引入包
from PyQt5.Qt import *
import sys

app = QApplication(sys.argv) #创建一个应用程序对象

#控件控操作
window = QWidget()
window.setWindowTitle("我的第一个GUI")
window.resize(500, 500)
window.move(400,200)

with open("study.qss", "r") as f:
    qApp.setStyleSheet(f.read())

label1 = QLabel(window) #
label1.setText("this is normal")
label1.setObjectName("notice")
label1.setProperty("notice_level","normal")

label2 = QLabel(window) #
label2.setText("this is warning")
label2.setObjectName("notice")
label2.setProperty("notice_level","warning")
label2.move(10, 10)

label3 = QLabel(window) #
label3.setText("this is error")
label3.setObjectName("notice")
label3.setProperty("notice_level", "error")
label3.move(20, 20)

button = QPushButton(window) #qss文件的样式不适用与该组件,因为qss文件里没有定义QPushButton组件的样式
button.setText("这是个按钮")
button.setObjectName("notice")
button.move(30, 30)

window.show()

sys.exit(app.exec_())
posted @ 2020-01-02 13:12  立业的博客  阅读(386)  评论(0编辑  收藏  举报