程序员开发实例大全宝库

网站首页 > 编程文章 正文

Python+PyQt5 QSS样式表(python pyqt5实例)

zazugpt 2024-08-12 03:05:30 编程文章 24 ℃ 0 评论

QSS的全称是Qt Style Sheets,顾名思义Qt样式表。Qt样式表是一种强大的机制,除了通过子类化QStyle已经可以实现的功能外,还允许您自定义窗口小部件的外观。 Qt样式表的概念,术语和语法受到HTML级联样式表(CSS)的启发,QSS是应用于Qt的窗体中。在PyQt5中为了更快捷的绘制界面,UI desinger中同样提供了一个快捷的方法。

Ui designer的编辑对话框

QSS句法格式

  • 一般的句法格式
  1. QTextEdit:是一个选择器,代表这个窗口内的所有QTextEdit控件。
  2. font:QTextEdit的属性,冒号后面的是值。
  3. 每一条样式由“ 属性:值” 组成,两条样式用“;”隔开。
QTextEdit{
								font: 12pt "华文楷体";
								color: rgb(85, 255, 255);
								background-color: rgb(85, 255, 255);
}
  • 选择器类型

Qt样式表支持CSS2中定义的所有选择器。下表总结了最有用的选择器类型。

这些类型选择可以组合使用

QPlainTextEdit,QTextEdit, QLineEdit{"
    font: 12pt \"华文楷体\";
    color: rgb(85, 255, 255);
    background-color: rgb(85, 255, 255);
"}
  • 子控件

为了设置复杂小部件的样式,有必要访问小部件的子控件,例如QComboBox的下拉按钮或QSpinBox的向上和向下箭头。选择器可能包含子控件,可以将规则的应用限制为特定的窗口小部件子控件。例如:

名称为comboBox_2的向上箭头更改为文件夹中的图片。

QComboBox#::drop-down{image: url(C:/Users/12057/Desktop/PyQt5/Demo_22/image/向下.png);}

常用的子控件

  1. ::down-arrow combo box或spin box的下拉箭头
  2. ::down-button spin box的向下按钮
  3. ::drop-down combo box的下拉箭头
  4. ::indicator checkbox、radio button或可选择group box的指示器
  5. ::item menu、menu bar或status bar的子项目
  6. ::menu-indicator push button的菜单指示器
  7. ::title group box的标题
  8. ::up-arrow spin box的向上箭头
  • 伪状态

选择器可能包含伪状态,表示根据窗口小部件的状态限制规则的应用。伪状态出现在选择器的末尾,中间有冒号(:)。例如,当鼠标悬停在QLabel上时,变成红色。

QLabel#label_2:hover{color:red;}

伪状态可以串联使用,就是类似一个与运算,例如:

如果鼠标移动到一个已经被勾选的checkBox上方时候,其字体变为红色。

QCheckBox:hover:checked{color: red}

伪状态可以并联使用,就是类似一个与或运算,例如:

如果鼠标移动到上方,或者已经被勾选,字体变为红色。

QCheckBox:hover,QCheckBox:checked{color: red}

子控件也可以使用伪状态,例如:

名称为checkBox_2的indicator子控件在check和unchecked的时候显示不同的的图片

#checkBox_2::indicator:checked{image:url(C:/Users/12057/Desktop/PyQt5/Demo_22/image/已经选择.png);}
QCheckBox#checkBox_2::indicator:unchecked{image:url(C:/Users/12057/Desktop/PyQt5/Demo_22/image/未被.png);}

QSS样式表使用

  • 如何使用

第一种方法,就是在UI designer中通过编辑框,对当前窗口设置样式表。但是有多个的窗口时候,需要重复设计,工作量很大。

第二种方法,就是新建一个qss文件,读取这个文件中的内容,调用setStyleSheet函数就可以。

QWidget{
   background-color: rgb(255, 255, 255);
   font: 12pt "BankGothic Lt BT";
}
QPlainTextEdit,QTextEdit, QLineEdit{
   font: 12pt "华文楷体";
   color: rgb(85, 255, 255);
   background-color: rgb(85, 255, 255);
}
QCheckBox#checkBox_2::indicator:checked{
   image:url(C:/Users/12057/Desktop/PyQt5/Demo_22/image/已经选择.png);
}
QCheckBox#checkBox_2::indicator:unchecked{
   image:url(C:/Users/12057/Desktop/PyQt5/Demo_22/image/未被选择.png);
}
if __name__ == '__main__':
    app = QApplication(sys.argv)
    file = QFile("Qobj.qss")
    file.open(QFile.ReadOnly)
    style = file.readAll().data().decode("UTF-8")
    app.setStyleSheet(style)
    mainWindow = MainWindow()
    mainWindow.show()
    sys.exit(app.exec_())
  • 样式的明确定义

多条样式对同一个属性定义了不同的值以后,就会出现冲突,这个label_2的颜色为红色,其余的为绿色。

 self.setStyleSheet('''QLabel#label_2:hover{ color:red;}''')
 self.setStyleSheet("QLabel:hover{color:green;}")

本篇介绍PyQt5的QSS样式表,如果需要源代码可关注私聊,感谢支持!!!!

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表