PyQt5/Pyside2学习记录

前言

最近导师的项目要求是PyQt,现学现用,现在写下中间的一些注意事项。
本程序分为两个界面,要求两个界面能堆叠显示,一个首页界面,一个功能界面。在功能界面中,有三个操控的控件,下拉框、文本框和确认按钮;还有三个区域显示两个图片和一个动画。工具栏中有四个点击项,前两个是实现首页和功能界面的切换,剩下两个是用来弹出新窗口,显示文档的,记录几个重要的知识点。

富文本可以显示公式

Layout可以控制自适应

虽然加了layout不能自主控制空间的大小,但是只要合理组织layout,也能使控件大小符合自己的要求

动画和图片都是使用QLabel展示

动画的显示是一帧一帧的显示的

# Setup timer to update video frame
self.timer = QTimer()
self.timer.timeout.connect(self.update_video_frame)
self.timer.start(30)  # 30 ms interval for approximately 30 fps
def update_video_frame(self):
     ret, frame = self.anima.read()
     if ret:
         self.display_image(self.ui.anima_view, frame)
     else:
         self.anima.set(cv2.CAP_PROP_POS_FRAMES, 0)

tips:应该也可以通过setStyleSheet来控制图片的显示

堆叠功能通过StackWidget来实现

通过下面的代码实现页面的切换

def on_home(self):
	self.ui.stackedWidget.setCurrentWidget(self.ui.home_page)

QLineEdit有returnPressed用于按回车调用函数

menubar加action有返回值用于绑定事件函数

要想弹出新窗口,可以预先定义一个窗口,然后load进来。
注意:load进来的窗口要放在类的一个成员变量里不然的话会被释放掉

self.custom_widget = QUiLoader().load(ui_name)
self.custom_widget.show()
PyQt5 PySide6 都是非常流行的 Python GUI 框架,可以用于创建跨平台的应用程序。通过它们我们可以构建功能强大、用户友好的图形界面应用程序。下面我们以“人员管理系统”为例,简要说明如何利用 PyQt5PySide6 实现这一目标。 ### 功能需求分析 假设我们要开发一个人员管理系统的简单版本,其基本功能包括: 1. 添加新员工信息; 2. 删除已有的员工记录; 3. 修改已有员工的信息; 4. 查询特定条件下的员工数据。 ### 开发步骤概述 #### 1. 界面设计 首先需要确定应用的基本布局结构。例如主窗口应该包含几个核心部件如输入框、按钮等,并且还需要有一个表格组件展示当前所有存储的数据项。 - 使用 `QLineEdit` 控件获取文本型的字段值(比如姓名、年龄)。 - 利用 `QPushButton` 来触发各种事件操作像保存/删除等功能按键。 - 借助于 `QTableWidget` 显示现有的数据库条目列表方便查看编辑。 #### 2. 数据模型选择 对于简单的应用场景可以直接把数据存放在内存中的数组里;如果希望长期保留这些资料则建议连接轻量级SQL数据库引擎SQLite作为后台支持服务端持久化处理机制之一。 - 当采用纯Python内置字典或者list存放临时性的职工档案时,那么就无需额外安装其他依赖包了直接开始编码即可完成任务要求的功能点实现过程较为简易快捷适合初学者练习项目尝试制作小型工具软件产品原型阶段试错成本较低风险小收益快见效明显效果显著值得推荐给新手入门学习参考借鉴模仿复制粘贴修改调整优化升级重构维护更新换代迭代进化演变传承创新突破局限拓展边界扩大范围提升高度增加深度加强厚度丰富内涵充实内容完善体系建立标准规范形成规律总结经验教训积累知识沉淀技术底蕴培养专业素养提高职业水平塑造个人品牌展现独特魅力彰显非凡价值体现人生意义追求理想抱负实现自我超越达成终极目标成就辉煌伟业谱写壮丽篇章铸造永恒丰碑! #### 示例代码片段 (基于 PyQt5) ```python import sys from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QLineEdit, QTableWidget class PersonManager(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): layout = QVBoxLayout() # Input Fields Example - Name and Age self.nameField = QLineEdit(self) self.ageField = QLineEdit(self) addButton = QPushButton("Add", self) delButton = QPushButton("Delete Selected", self) table = QTableWidget(0, 2) layout.addWidget(QLabel('Name')) layout.addWidget(self.nameField) layout.addWidget(QLabel('Age')) layout.addWidget(self.ageField) layout.addWidget(addButton) layout.addWidget(delButton) layout.addWidget(table) self.setLayout(layout) if __name__ == '__main__': app = QApplication(sys.argv) ex = PersonManager() ex.show() sys.exit(app.exec_()) ``` 上述示例只是展示了基础框架搭建部分,在实际开发过程中还需补充更多细节才能让整个系统运行起来满足预期业务逻辑需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值