Python生成C++类工具

以下为授权转载的一盎司科技公众号文章


Python除了编写脚本非常方便,制作界面小工具也很快捷,这里使用PySide6制作一个自动生成C++类的小工具。后续考虑使用之前开源的PySideFrameless项目来改造,提升美观度。

示例代码地址:

GitHub地址:https://github.com/iounce/python-cpp-demo

Gitee地址:https://gitee.com/iounce_admin/python-cpp-demo

环境

  • Windows操作系统:Windows10(21H2,19044.1766)

  • C++开发环境:Visual Studio 2022社区版

  • Python:3.10.4

编写界面

PySide6制作界面,可以使用界面设计工具来设计布局,然后编译成Python文件来使用。同时,也可以纯代码的方式来实现布局,这样就无需依赖其他外部文件。两者各有优劣,可根据需要选择,此处选择手动编码实现。

首先定义自定义类MainWindow,继承自QtWidgets.QMainWindow,然后添加一个空组件设置为主界面的中心控件,接着在中心控件设计布局。

界面布局

布局主要由QGridLayout,QHBoxLayout来实现,这里将主界面水平分割为三块,第一块self.layout_class为C++类和文件名所在行;第二块self.layout_func为类的成员函数相关内容(返回值,函数名,入参等)所在的行;第三块self.layout_result为结果列表所在的行。

图片

初始化控件

接着,对每一块水平布局进一步细化,增加标签,输入框等控件,完善界面细节。其中,init_class()实现类名,文件名等控件的初始化;init_func()实现函数定义相关控件的初始化;init_result()则实现结果列表控件等的初始化;init_tab_order()则设置控件的tab顺序,方便通过tab键来切换控件。

图片

图片

图片

增加响应函数

在点击界面控件的时候,需要绑定对应的响应函数,这样才会响应点击的操作,其中on_add_func()是点击添加函数按钮的响应,on_sub_func()是减少函数按钮的响应,on_gen_cpp()是生成C++相关文件按钮的响应。

图片

图片

增加消息过滤

消息过滤主要是为了当输入完C++类名后自动生成C++文件名,譬如输入类名MyClass,则自动生成MyClass.cpp。

图片

图片

效果展示

图片

说明:

  1. 项目文件包含main.spec文件,可以通过安装PyInstaller将Python文件打包为exe文件;

  2. 项目文件包含setup.iss文件,可修改相关路径,实现将exe文件及其依赖文件打包为安装文件,然后可以在其他机器安装。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值