1-PyQt快速开发框架预告

系列文章目录

待续


一、前言

在学习PyQt过程,希望有那么一款产品可以帮我实现部分通用界面部分,以提高开发效率,可是找寻很久没有找到。我经过2年多学习和项目实践后,终于决定开始本项目研发,用以解决我当时的困惑。


二、PyQt开发难点

在2018年初学Pyqt时,由于不得入门法则最终放弃;2019年重新开始学习,发现国内的书籍讲得非常浅显,经过这几年开发过程总结PyQt开发难点:


1.逻辑与UI分离

对于刚开始学习界面开发者,很容易把界面元素与逻辑混乱使用而不自知。更有甚者一个把在逻辑代码包含大量界面布局代码。这种搞法的代码,对后期维护非常不利。

2.UI布局设计

解决UI分离的之后,下一个难点就是UI布局。如何让界面上的控件在界面放大缩小过程,保持相对稳定。

3.界面整体构建

界面整体布局元素有:标题栏、项目栏、菜单、主界面、底部如何构建布局,并且切合项目特性以及用户者习惯。

4.界面快速调试

界面开发过程,需要不断修改代码,常规操作步骤是编写一点代码之后,关闭界面,重新打开界面进行调试。这种操作步骤效率非常低,特别是遇到界面加载内容过多,启动耗时的时候,这种步骤严重影响开发效率。

5.项目发布

打包工具的选择,我对比了pyinstaller、nuitka两款。pyinstaller使用简单易用,安全性相对nuitka来说低、打包程序运行性能差一些;nuitka存在的优势也不特别明显,并且nuitka入门门槛要高很多。
打包后如何调试、遇到问题如何解决都是打包面临待解决问题。

6.安全策略加固

项目打包后,需要解决以下几点破解风险:
1.数据库密码被破解
2.项目代码被破解
3.安装限制跳过

三、框架构思(脚手架)

在初期使用PyQt过程,提出脚手架概念,很少有人去思考。脚手架思维来源web开发中。这里不敞开说。本项目想要解决的只是开发过程中一小点问题:如果快速把分散的子界面集合成一个项目。言外之意就是:协助开发多个子界面,之后集成为一个项目。

四、功能介绍

1.脚手架界面

整体布局元素有顶部栏、菜单栏、主界面、底部栏四个布局效果入如下:
在这里插入图片描述

2.菜单管理

通过菜单管理,可以把子界面配置到脚手架之中来。按照二级菜单布局进行管理子界面的弹出按钮

3.无边框界面

去除PyQt界面边框,自定义标题栏、放大缩小关闭按钮、重写边框缩放事件。

4.调试开关

在界面运行过程,按一个快捷键,即可重写把更新的代码加载界面中来,提高调试效率。

5.自带常用界面

当前已经实现机构管理、用户管理两个常规界面

六、项目demo

项目demo地址:PyQt快速开发架构demo

敬请原谅:由于在项目安全策略还没有做好之前,演示版本使用时间有一点限制。
觉得这个产品就是你想要找的,那么请入群(541339181)领取更新的测试版本,也可以付费定制开发加Q:327097413。

隐藏的功能按键: a. 本项目提供菜单返回到一级菜单快捷键按键(按下Esc之后,回到一级菜单)。 b. 重载代码(Ctrl+R)

七、项目应用

demo只是一个产品展示,如何应用到自己的项目中,这里先留一个话题。当前大致提一下方式:1. 修改res/dts/下个两个excel文件(未来提供数据库版本之后,可以通过界面配置菜单);2.核心代码有main.pyd/callMain.pyd,再加上一个入口程序就可以集成构架出一个可以快速调试的脚手架项目(具体在后期会公布项目源码)。

八、未来功能

在第一版发布之后,能够获得大家认可之后,未来可能会开发更多功能:
例如:Pyd批量转换、项目相关名称自行更换、新增不同菜单样式(顶部菜单、右边菜单)、子界面关闭按钮样式调整(当前使用的是PyQt自带的容器解决的)等。

九、项目意义

本项目如果是给自己使用,存在的价值非常低,没有必要去开发。存在的意义:解决部分学习者入门问题。提高使用PyQt信心。有一年开发经验之后,完全可以自行构架本项目类似脚手架。

### PySide6 和 PyQt6 快速开发技巧及实战案例 PySide6 和 PyQt6 是基于 Qt 框架Python 绑定库,广泛用于开发跨平台的图形用户界面(GUI)应用程序。以下是一些快速开发技巧和实战案例的示例代码[^1]。 #### 1. 创建简单的窗口应用 以下是一个使用 PySide6 创建简单窗口的示例代码: ```python from PySide6.QtWidgets import QApplication, QLabel # 初始化应用程序 app = QApplication([]) # 创建一个标签控件 label = QLabel("Hello, PySide6!") label.show() # 运行应用程序主循环 app.exec() ``` 此代码展示了如何使用 `QApplication` 和 `QLabel` 创建一个显示文本的窗口[^1]。 #### 2. 动态更新 UI 元素 在实际开发中,动态更新 UI 元素是常见的需求。以下是一个动态更新标签内容的示例: ```python from PySide6.QtWidgets import QApplication, QLabel, QPushButton, QVBoxLayout, QWidget class MyWindow(QWidget): def __init__(self): super().__init__() self.label = QLabel("初始文本") self.button = QPushButton("点击更新") # 设置布局 layout = QVBoxLayout() layout.addWidget(self.label) layout.addWidget(self.button) self.setLayout(layout) # 绑定按钮点击事件 self.button.clicked.connect(self.update_label) def update_label(self): self.label.setText("文本已更新!") # 初始化应用程序 app = QApplication([]) window = MyWindow() window.show() app.exec() ``` 上述代码展示了如何通过按钮点击事件动态更新标签内容。 #### 3. 使用信号与槽机制 信号与槽是 Qt 的核心机制之一,用于实现组件间的通信。以下是一个简单的信号与槽示例: ```python from PySide6.QtCore import QObject, Signal, Slot class Communicate(QObject): signal = Signal(str) class Receiver(QObject): @Slot(str) def receive_signal(self, message): print(f"接收到信号: {message}") # 创建信号发送者和接收者 sender = Communicate() receiver = Receiver() # 连接信号与槽 sender.signal.connect(receiver.receive_signal) # 发送信号 sender.signal.emit("Hello from signal!") ``` 此代码展示了如何定义信号、连接信号与槽,并触发信号。 #### 4. 集成外部资源(如图片或样式表) 在 GUI 应用中,通常需要集成外部资源以增强用户体验。以下是一个加载图片并应用样式表的示例: ```python from PySide6.QtWidgets import QApplication, QLabel, QVBoxLayout, QWidget from PySide6.QtGui import QPixmap class ImageWidget(QWidget): def __init__(self): super().__init__() layout = QVBoxLayout() # 加载图片 pixmap = QPixmap("example.png") label = QLabel() label.setPixmap(pixmap) layout.addWidget(label) self.setLayout(layout) # 应用样式表 self.setStyleSheet("background-color: lightblue;") # 初始化应用程序 app = QApplication([]) window = ImageWidget() window.show() app.exec() ``` 此代码展示了如何加载图片并为窗口设置背景颜色[^1]。 #### 5. 参考资源 对于更深入的学习,可以参考《PyQt5快速开发与实战》一书的高清PDF版本及其源码[^2]。虽然该书主要针对 PyQt5,但其原理和大部分代码同样适用于 PyQt6 和 PySide6。 --- ###
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿飞哥666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值