pyqt样式表语法笔记(上) --原创

简介: pyqt样式表语法笔记(上)pyqtQSSpython样式表因为软件课设的原因开始学习使用pyqt4,才发现原来它也有样式表,而且语法跟css基本相同,而且一些功能实现起来感觉比js要简单方便得多。

pyqt样式表语法笔记(上)

pyqt
QSS
python
样式表

因为软件课设的原因开始学习使用pyqt4,才发现原来它也有样式表,而且语法跟css基本相同,而且一些功能实现起来感觉比js要简单方便得多。希望之后桌面软件开发过程中可能遇到的各种bug不会让我失去对pyqt的好感。

下面主要是经过我各种测试、瞎写之后得到的一些总结,也就是说一些常用的语法或者其他需要注意的地方。

  • 要写样式表可以直接在Qt Designer里编辑,官网给出的资料请参考如下链接
    QSS样式表规则

常用命令行--转化文件

        python    3行
        python    3行
  1. # 将ui文件转化为.py文件 
  2. pyuic4 **.ui > **.py 
        python    3行
        python    3行
  1. # 将qrc文件转化为.py文件 
  2. pyrcc4 **.qrc > **.py 

  • 编写槽函数文件
    代码示例
        python    14行
        python    14行
  1. from PyQt4.QtGui import QMainWindow 
  2. from PyQt4.QtCore import pyqtSignature 
  3. from PyQt4 import QtGui, QtCore 
  4. from ui import Ui_MainWindow 
  5.  
  6. class MainWindow(QMainWindow, Ui_MainWindow): 
  7. def __init__(self, parent=None): 
  8. QMainWindow.__init__(self, parent) 
  9. self.setupUi(self) 
  10.  
  11. @pyqtSignature("") 
  12. def on_changeColor_clicked(self): 
  13. self.l1.setStyleSheet("color:red"

常用语法

  • 1.修改label的颜色、大小等
    self.label_id.setStyleSheet("color:red;")
        python    4行
        python    4行
  1. @pyqtSignature("") 
  2. def on_PushButton1_clicked(self): 
  3. self.l1.setStyleSheet("color:red;"

以上代码是一小部分的截取,稍微解释一下。
@pyqtSignature("") 是装饰器,用于给槽函数传递参数。

函数名on_PushButton1_clicked表示QPushButton的id名是“PushButton1”,只要用户点击这个按键,就会触发下面的语句,即修改label(同理其id名为l1)的样式表

(以下的例子同理,除特殊情况不再做具体介绍。)

  • 2.设置文本框的内容
    self.lineEdit.setText("修改文本框内容")
        python    4行
        python    4行
  1. @pyqtSignature("") 
  2. def on_PushButton2_clicked(self): 
  3. self.lineEdit.setText("修改文本框内容"

若要重置文本框,则可设置setText(''),即设为空字符。

  • 3.获取文本框中的内容

单行文本框lineEdit

        python    2行
        python    2行
  1. content = self.lineEdit.text() 

多行文本框textBrowser

        python    2行
        python    2行
  1. content = self.textBrowser.toPlainText() 
  • 4.向文本框的原有内容基础上添加内容
        python    2行
        python    2行
  1. self.textEdit.append("要添加的内容"
  • 5.radioButton使用介绍

使用场景:当我们安装软件的时候,总是会有一个所谓的"协议",然后问我们同不同意,然后没办法,我们只能选同意咯~~
但是使用radioButton会遇到如下问题。
(1). 将radio控件分类
因为pyqt默认会将所有radio控件互斥,所以只能选择一个radioButton,比如当我们要做一个问卷调查的时候,我先选了第一题的答案,刚选完第二题的答案,结果第一题答案因为互斥的关系没了,那岂不是很蛋疼,所以需要用到GroupBox来解决这个问题.如下图

GroupsBox

(2). 耦合radio控件
还是以问卷为例,有的时候我们需要根据用户的选择进行相应题目的默认选择,比如他的学校选择了“北京大学”,那么属性那一栏应该选择“学霸”,而不是“学渣”

        python    8行
        python    8行
  1. @pyqtSignature("") 
  2. def on_rb1_clicked(self): 
  3. self.rb3.setChecked(True
  4.  
  5. @pyqtSignature("") 
  6. def on_rb2_clicked(self): 
  7. self.rb4.setChecked(True

rb1-北京大学 rb2-家里蹲大学 rb3-学霸 rb4-学渣
setChecked(True) 表示选择该项
isChecked() 可以用于判断某选项是否被选择。若已被选择,就返回True

  • 6.dial控件和slider控件

dial控件

slider控件


二者的主要作用是会发射"int"型的数值,默认是0-99,也可在Qt designer中自己设定,所以一般这两者用到的槽函数是 valueChanged(self,value) ,注意,不同于上面几种控件,这两种是要传参的,所以装饰器需要稍微修改一下,详见下面带代码

        python    6行
        python    6行
  1. # 装饰器需要声明传入int型的变量 
  2. @pyqtSignature("int") 
  3. def on_dial_valueChanged(self,value): 
  4. self.label_9.setStyleSheet("font-size:%dpx;" % value) 
  5. self.label_10.setText(str(value)) 

这段代码的作用是,随着用户旋转dial控件,字体大小相应变化,右边的label显示当前字体的大小(即value)

dial示例

  • 7.对话框
  • (1) 提示对话框
    QMessageBox.information(self,'标题','提示信息','OK','Cancel','其他')

解释:上面参数中的'OK','Cancel','其他'表示对话框的可选项,一般默认是OK.
另外从左至右依次返回0,1,2.
参考代码

        python    5行
        python    5行
  1. @pyqtSignature("") 
  2. def on_information_clicked(self): 
  3. info = QMessageBox.information(self, 'information', u'提示对话框', 'OK', 'Cancel', u'其他'
  4. print(info) 

information

  • (2) 询问对话框
    QMessageBox.question(self,'标题','询问信息')

question

  • (3) 警告对话框
    QMessageBox.warning(self,'标题','提示信息')

warning

  • (4) 严重警告对话框
    QMessageBox.critical(self,'标题','提示信息')

critical

  • (5) 关于对话框
    QMessageBox.information(self,'标题','提示信息')

about

  • (6) AboutQt对话框
    QMessageBox.information(self,'标题','提示信息')
    这个是pyqt内置的,所以参数不能修改,只能像下面这样写
        python    4行
        python    4行
  1. @pyqtSignature("") 
  2. def on_aboutQt_clicked(self): 
  3. aboutQt = QMessageBox.aboutQt(self, 'AboutQt'

aboutQt

目录
相关文章
|
7月前
|
Shell Python
python设置应用程序的样式并部署(二)
python设置应用程序的样式并部署(二)
47 0
|
2月前
|
Python
Python实用记录(十六):PyQt/PySide6联动VSCode便捷操作指南
本文提供了一份详细的PySide6与VSCode联动的操作指南,包括安装配置VSCode、安装必要的扩展、配置扩展以及编辑和运行PySide6项目。文中还提到了相关工具如uic.exe、rcc.exe和designer.exe的用途,并提供了进一步学习的资源。
469 1
Python实用记录(十六):PyQt/PySide6联动VSCode便捷操作指南
|
1月前
|
数据可视化 开发者 Python
Python GUI开发:Tkinter与PyQt的实战应用与对比分析
【10月更文挑战第26天】本文介绍了Python中两种常用的GUI工具包——Tkinter和PyQt。Tkinter内置于Python标准库,适合初学者快速上手,提供基本的GUI组件和方法。PyQt基于Qt库,功能强大且灵活,适用于创建复杂的GUI应用程序。通过实战示例和对比分析,帮助开发者选择合适的工具包以满足项目需求。
126 7
|
3月前
|
Python
5-5|python开启多线程入口必须在main,从python线程(而不是main线程)启动pyQt线程有什么坏处?...
5-5|python开启多线程入口必须在main,从python线程(而不是main线程)启动pyQt线程有什么坏处?...
|
2月前
|
XML JSON Ubuntu
Python实用记录(十五):PyQt/PySide6打包成exe,精简版(nuitka/pyinstaller/auto-py-to-exe)
本文介绍了使用Nuitka、PyInstaller和auto-py-to-exe三种工具将Python的PyQt/PySide6应用打包成exe文件的方法。提供了详细的安装步骤、打包命令和参数说明,适合新手学习和实践。
628 0
|
4月前
|
前端开发 Python
使用Python+openpyxl实现导出自定义样式的Excel文件
本文介绍了如何使用Python的openpyxl库导出具有自定义样式的Excel文件,包括设置字体、对齐方式、行列宽高、边框和填充等样式,并提供了完整的示例代码和运行效果截图。
185 1
使用Python+openpyxl实现导出自定义样式的Excel文件
|
4月前
|
数据采集 开发工具 Python
海康威视工业相机SDK+Python+PyQt开发数据采集系统(支持软件触发、编码器触发)
该系统基于海康威视工业相机SDK,使用Python与PyQt开发,支持Gige与USB相机设备的搜索及双相机同时显示。系统提供软件触发与编码器触发模式,并可在数据采集过程中实时保存图像。此外,用户可以调节曝光时间和增益,并进行信息输入,这些信息将被保存至配置文件以便下次自动加载。参数调节与实时预览等功能进一步增强了系统的实用性。
315 1
|
4月前
|
数据可视化 Linux API
Tkinter与PyQt的对比
【8月更文挑战第3天】本文对比了Python中两大GUI工具包Tkinter与PyQt。Tkinter作为Python标准库的一部分,易于学习且轻量级,适合快速开发简单的跨平台GUI应用。PyQt功能强大且灵活,支持复杂应用的开发,更适合有经验的开发者。通过示例代码展示了如何使用这两种工具包创建基本的GUI应用及图像查看器,帮助读者理解它们的不同之处。选择哪个工具包取决于项目的具体需求、开发者的经验以及对功能和性能的要求。
139 4
|
5月前
|
监控 程序员 持续交付
`pylint`是一个高度可配置的Python代码分析工具,它可以帮助程序员查找代码中的错误、样式问题、可能的bug以及不符合编码标准的部分。
`pylint`是一个高度可配置的Python代码分析工具,它可以帮助程序员查找代码中的错误、样式问题、可能的bug以及不符合编码标准的部分。
|
5月前
|
API 开发工具 git
`black`是一个不受约束的Python代码格式化工具。它自动将Python代码格式化为PEP 8样式,但具有一些额外的规则,旨在使代码更加一致和易读。
`black`是一个不受约束的Python代码格式化工具。它自动将Python代码格式化为PEP 8样式,但具有一些额外的规则,旨在使代码更加一致和易读。