PyQt学习记录

PyQt学习记录

要在界面上 创建一个控件,就需要在程序代码中 创建 这个 控件对应类 地一个 实例对象。

在Qt系统中,控件(widget)是 层层嵌套 的,除了最顶层的控件,其他的控件都有父控件。

几个函数

函数move()可以决定一个控件显示的位置

函数resize()可以决定一个控件显示的大小

界面处理动作signal和slot(信号槽)

当界面上的一个控件被操作时,就会发出 信号,英文叫 signal,表明一个事件发生了。

我们可以预先在代码中指定处理这个 signal 的函数,这个处理 signal 的函数叫做 slot。

Qt Desinger的使用

Qt Desinger是一个可视化工具,可以方便地构建Qt界面。

使用该工具构建界面后,生成.ui文件

Layout布局共有四种,使得界面内容按我们需要进行空间自动适配。

只有整体进行布局之后,整体才会适配,布局时至少选择两个控件才可以。

使用Layout布局后可能需要进行微调,因为有些控件的大小可能会发生变化。

控件QWidget属性中的sizePolicy主要决定了其缩放策略:

水平策略控制某个控件在一个布局中的伸展程度

水平伸展控制一个布局中,各控件所占大小

(垂直同理)

Spacers可以在控件之间增加空格,灵活调整间距

如何构造理想布局?

  1. 先不用Layout,使用Groupbox把大致位置摆放好
  2. 布局从小到大,由内层到外层
  3. 调整大小比例,优先使用Layout的layoutStrentch属性来控制内部控件所占空间比例

如何正式发布程序

使用PyInstaller

安装pip install pyinstaller

执行pyinstaller xxx.py --noconsole --hidden-import PySide6.QtXml

即可

这样就会在当前目录下产生一个名为 dist 的目录。里面就有一个名为 xxx 的目录,我们的可执行程序 xxx.exe 就在里面。

其中

--noconsole 指定不要命令行窗口,否则我们的程序运行的时候,还会多一个黑窗口。 但是我建议大家可以先去掉这个参数,等确定运行成功后,再加上参数重新制作exe。因为这个黑窗口可以显示出程序的报错,这样我们容易找到问题的线索。

--hidden-import PySide6.QtXml 参数是因为这个 QtXml库是动态导入,PyInstaller没法分析出来,需要我们告诉它

设置图标

复制代码
from PyQt6.QtGui import QIcon
app.setWindowIcon(QIcon('logo.jpg'))

样式QSS

QSS selector语法 几乎 和 Web CSS 的 selector语法没有什么区别

selector:设置哪些特征元素的显示效果

declaration:具体的效果,颜色、大小等

多线程

两种实现方法

  • Python多线程
  • PyQt多线程

界面美化

通过 提升控件 来使用 QFluentWidgets

右击一个小部件,选择右击菜单上的 提升为...

提升为 的作用是把原生部件替换成自定义小部件,在例子中是 qfluentwidgets.PushButton。

弹出的对话框上需要填写自定义的组件名。头文件是组件库的包名 qfluentwidgets,提升的类名称为 PushButton

完成提升后不会在设计师中看到任何变化,保存 ui 文件后运行 py 代码,可以发现 import 的是 PushButton

相关推荐
钢铁男儿5 天前
PyQt事件处理机制深度指南:超越信号与槽的底层掌控
pyqt
Goona_5 天前
拒绝SQL恐惧:用Python+pyqt打造任意Excel数据库查询系统
数据库·python·sql·excel·pyqt
赤鸢QAQ12 天前
Qt小组件 - 6 异步运行函数
开发语言·python·qt·pyqt
斟的是酒中桃12 天前
基于YOLOv8的火灾智能检测系统设计与实现
人工智能·深度学习·yolo·pyqt
小张贼嚣张14 天前
【无标题】
pyqt
云空15 天前
《PyQtGraph例子库:Python数据可视化的宝藏地图》
开发语言·python·信息可视化·scikit-learn·pyqt
想成为风筝18 天前
从零开始学习深度学习—水果分类之PyQt5App
人工智能·深度学习·计算机视觉·pyqt
云空18 天前
《PyQt6-3D:开启Python 3D开发新世界》
python·3d·pyqt
云空20 天前
《QtPy:Python与Qt的完美桥梁》
开发语言·python·qt·pyqt
云空21 天前
《PyQt6-3D应用开发技术文档》
3d·pyqt