大家是怎么学习Pyqt5的?
本文最后更新于 2025年8月17日 下午
忽略 pyqt/pyside 以及大的版本号,以前的我会好好看官方文档和示例,现在的我只想拥抱大模型快速实现功能。
在了解一些基础 GUI 专业名词和大致的框架后,剩下的就是功能实现的细节。而大多数常规功能都可以通过大模型快速问出来。
比如我写的圣遗物评分工具,前些日子有群友反映有些词条的系数配置不是非常合理。
比如常规评分暴击系数配 2,暴伤系数配 1,大攻击配 1,小攻击配 0.15。现在角色+专武的攻击力差不多有 1000 左右,1% 大攻击约等于+10 攻击力,评分为 1;而小攻击配 0.15,同样的 10 点攻击加了 1.5 评分,造成小攻击评分偏高。
一番沟通后,我觉得可以做成配置项,有高级需求的专业玩家可以手动修改。由于之前的配置项都做成了 json 文件,改动起来专业性更高,所以一直都有做成 GUI 的想法。
所以现在的需求是在原来主页面的基础上,增加一个设置页面,在设置页面中可以对一些词条系数进行修改。
由于之前都是在一个页面完成所有 GUI 布局的,这次新加页面的需求暂无思路。这两年 AI 辅助编程发展迅速,所以第一时间也是想到了能不能问问大模型得到想要的结果。
pyside6 如何一个窗口内实现多个页面?
大模型很快就给出了几个可能的方法:
我觉得 QStackedWidget 比较合适,于是进一步问实现细节:
使用 QStackedWidget 方法,我想要拆分第二个页面的代码到另一个 py 文件中
大模型很快给出了基本框架,包括创建第二个页面的.py 文件,两个页面间的跳转。以下是首页控制切换的核心代码逻辑:
1 |
|
简单看过代码后,我发现其中一个问题。大模型给出的示例代码其实在第一个页面中已经包含了 2 个页面逻辑,使用 Layout 包了一层 StackedWidget,StackedWidget 里包了两个页面。我现在没有外面那层 Layout,感觉整体都需要重构,于是再次和大模型友好交流:
关于 pyside6 多页面,我原先只考虑了一个页面,布局都用了 self.layout 快速实现,现在增加一个页面,如何快速修改?
大模型也很快指出,只需要将原来第一个页面封装成 QWidget 类,然后在新的主窗口中导入原先主页面的类和新的设置页的类即可。具体页面项目结构如下:
随后我将原来整段页面代码(大概 500 多行)提供给了大模型,帮我生成三份.py 文件。试着运行了下居然可以跑通,且原页面功能都基本完全实现。只是一些特殊的操作逻辑会报错,我看着报错说明快速定位问题,补充了几个缺失的全局变量就完全没问题了。
最值得称赞的是,大模型提供的代码帮我原先页面的初始化部分也重新整理了。原先混在一起的 UI、数据、交互事件它居然比较合理地拆成了三份 inti_ui(self), inti_data(self), init_events(self)。
最后补充了一些业务细节,页面上已经非常完善,包括两个页面的 SizePolicy 不会互相影响,避免页面很空等等。之后有时间再补充数据修改的逻辑即可,感觉 AI 辅助编程大大提升了我的效率。
具体项目可参考:刻晴办公桌