当前位置: 首页 > news >正文

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

在这里插入图片描述

http://www.dtcms.com/a/106930.html

相关文章:

  • python 项目怎么通过docker打包
  • 前端面试题之CSS中的box属性
  • 【Python使用】嘿马云课堂web完整实战项目第1篇:项目概述,项目背景【附代码文档】
  • EasyExcel在Linux上运行正常,在Docker中导出FontConfiguration.getVersion错误(不额外安装fontconfig)
  • 教学管理系统的E-R图
  • go游戏后端开发23:赢三张游戏逻辑
  • C语言内存函数详解
  • mycat--垂直分表--
  • mmaction2教程(2) QA
  • LangChain 使用向量数据库介绍与使用
  • Uniapp 持续出现 Invalid Host/Origin header 解决方法
  • Spring AOP + Redis缓存设计实战:基于注解的优雅三防方案(击穿/穿透/雪崩)
  • 【算法手记9】OR26 最长回文子串 NC369 [NOIP2002 普及组] 过河卒
  • 2024蓝桥杯国赛真题——数位翻转
  • 网络安全防护与挑战
  • 在uniapp中,video比普通的标签层级高解决问题
  • 项目实战--登录页面
  • 运维培训班之最佳选择(The best Choice for Operation and Maintenance Training Courses)
  • CSP-J/S冲奖第22天:时间复杂度
  • 内网服务器centos7安装jdk17
  • SSM-SpringMVC篇
  • 【JavaSE】String 类
  • 基于Rust与WebAssembly实现高性能前端计算
  • 一套AI训推一体化解决方案约等于100万个应用?
  • new/delete到底做了啥?
  • Python 数据类型 - 集合(set)
  • 【ACM MM 2024】FiLo++实验步骤总结
  • Python网络爬虫:从入门到实践
  • ROS2 高级组件中的webots介绍
  • 合并相同 patient_id 的 JSON 数据为数组