PyQt学习记录

发布于:2025-04-03 ⋅ 阅读:(14) ⋅ 点赞:(0)

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

在这里插入图片描述