使用Qt5+python3实现一个word和Excel操作的一个工具,新手入坑,坑死人不偿命。

c++操作word和Excel

作为一个接触c++只有一个月的新手人员,一直想写应用的小工具,验收一下学习成果,刚好赶着项目需要,最近在修改大量的交付文档,就萌发一个用c++编写工具的想法: 网上搜索确实有很多方法,看了下网上的资料,发现对于我们这种小西米看着头痛;

c++调Word是可以实现,但是没有一个很好的库或之类的什么都要自己写,而且实现一个小功能要写一个很长的代码,看着别人写好的都难受,所以果断放弃;

因为自己对python接触的早所以,所以萌发了用python来调Word,搜索python调word,太多资料了;而且代码简洁易懂,不用去关系word提供的原始api,直接在上层调用,爽的一比;

c++调python

网上代码很多,很快就用python写好对word等文件的操作的脚本,下面就是坑中坑,然后想写个图形界面封装一下,想想就用qt,正好电脑上有QT5的环境,由于第一次鬼知道我经历是什么:

环境搭建

电脑上python3,写好的脚本也是python3就没有管直接跟着网上资料进行配置吧https://www.e-learn.cn/content/python/1322577; 由于脚本放置的位置错误造成找不到模块;

由于出现了问题我决定用一个test.py文件来测试基本的qt调c++,修改了路径,文件也放的正确怎么也没有效果,我怀疑是电脑坏了,各种重启。网上搜了半天鬼知道什么原因;

还有一个小坑,就是python3的版本位数一定要和编译器的版本匹配,不让也要报错;

操作应用 由于我我写好的python文件是一个类,而且类中还有初始化,网上的资料都没有对类进行初始化;

这可以对python的类进行初始化并传入word地址参数;

我编写的c++调python3三个参数,三个参数涉及到中文等字符问题,最大的坑来了;

Qstring到string到char*,各种问题,界面收到的是Qstring需要转到char*才能传入python中

6. qtcreator也有坑,编译时候一定要清除后再编译,如果确认没问题建议你重启下电脑之类,把其他编译文件或qmake文件删除后重新编译;

7. 最坑的问题来了:

之前都是好的,过了几天死活运行不起,没办法用这个类去创建python对象。期间各种换环境,甚至把虚拟机都装上了。最后也没有找到原因,纠结几天也没有找到原因,最后不得已只有屈服,将原本python类在上层封装一个函数,c++中直接通过函数去调用;

多线程调python脚本 c++中我用循环去调python脚本执行word操作,但是返回结果始终存在一个或两个失败;没有管它,但这样的效率太低了,准备把循环替换成多线程提高效率。我选了qt中高级库

这个线程操作比较上层我选择了它,调用的会根据参数自己去匹配。比较方便

接下就是问题了来了,死活不行一调,程序就挂,还报出来一个GIL的库,恍然大悟,python全局解释性锁同一时间只允许一个线程操作python解释器。于是对着问题去网上一搜很快解决,需要解锁,要允许多线程操作python脚本;

终于完成了,可以调用了。把全局锁关闭后,发现之前不是出现的循环调用的时候返回错误的问题也一并解决了,就是因为GIL的问题,其实循环调用也是一样,c++调python本来就开线程去调用,所以一并解决哦了

总结环境搭建是一个坑,还有就是对很多东西不熟悉,而且我用的都是比较新的环境网上资料少的很,需要运气解决,不过最终我实现一个小工具能对Excel和word等文件使用qt去操作它,虽然现在只实现一键替换文件夹中所有文件名和文件内容的字符,但只要通了有需要还可以慢慢研究。。。。。python转c++这条路太长了,慢慢学习吧

qt5 python 教材_QT5和python3结合你想不到坑相关推荐

  1. 零基础学python全彩版电子书-Python3零基础教材电子书合集

    Python3零基础教材电子书合集,传送门:https://www.52pojie.cn/thread-676318-1-1.html 一.<Python编程从入门到实践> 链接:http ...

  2. python编程入门电子书-Python3零基础教材电子书合集

    Python3零基础教材电子书合集,传送门:https://www.52pojie.cn/thread-676318-1-1.html 一.<Python编程从入门到实践> 链接:http ...

  3. 少儿编程python教材_少儿编程|Python环境安装

    一.为什么要学Python? 小学 山东,浙江,北京地区小学已将Python内容纳入教材 高中 浙江省已将信息技术教材编程语言替换为Python 大学 计算机二级考试加入"Python 语言 ...

  4. 中小学python教材电子版_Python3零基础教材电子书合集

    Python3零基础教材电子书合集,传送门:https://www.52pojie.cn/thread-676318-1-1.html 一.<Python编程从入门到实践> 链接:http ...

  5. 中文开源!它或许是最适合自学的Python教材

    英文原版和中文翻译版的电子材料小编已经整理好了,需要的同学可以通过扫描下方的二维码,并在后台回复自学关键词. ????长按上方二维码 回复「自学」即可获取资料 <Python Data Scie ...

  6. python3里的pillow怎么安装_“python安装pillow教程“python3.4怎么安装pil

    "python安装pillow教程"python3.4怎么安装pil python安装pillow教程2020-10-09 03:37:02人已围观 如何在python3.6中装p ...

  7. linux下载哪个python版本-Linux安装python3.6

    如果本机安装了python2,尽量不要管他,使用python3运行python脚本就好,因为可能有程序依赖目前的python2环境, 比如yum!!!!! 不要动现有的python2环境! 一.安装p ...

  8. Ubuntu下安装Python3.6并在终端输入Python就能显示Python3.6

      Ubuntu17.04自带Python2.7与Python3.5.3的版本,由于Python2与Python3有着一些差距可能需要安装更新Python3的版本,并且切换默认的Python解释器. ...

  9. ubuntu安装python3.8_将 Ubuntu 16 和 18 上的 python 升级到最新 python3.8 的方法教程

    1. 概述 本文记录在 Ubuntu 16.04 上将 python 升级为 3.8 版本,并配置为系统默认 python3 的过程. 在 Ubuntu 16.04 中,python3 的默认版本为 ...

最新文章

  1. 360度无死角、近距离看「CNN」训练,是种什么体验?网友:美得不真实
  2. Machine Learning week 2 quiz: Linear Regression with Multiple Variables
  3. 中国量子通信再获突破,潘建伟团队完成人类首次洲际量子通信
  4. 垃圾回收机制之复制算法
  5. Matplotlib(二)绘图生命周期
  6. 让IE6-IE8 支持HTML5
  7. command模式 java_命令模式(Command)_java实现
  8. 18kw丹佛斯变频器常见故障_变频器常见故障——输出不平衡、过载、开关电源损坏...
  9. thinkphp事务处理以及无效时的解决方案(整理)
  10. PHP 实现-多线程编程
  11. MD5 加密算法详细介绍
  12. Ubuntu20.04设置WiFi热点
  13. 利用python进行假设检验
  14. 用python画六边形
  15. 蓝牙耳机蓝牙音箱出口加拿大亚马逊ICID认证周期费用
  16. maven 项目 springMVC实现文件图片的上传下载功能详解(源码已提供,小白必看)
  17. 非线性规划之分式规划
  18. 计算机科学经典著作下载
  19. props传递对象_vue组件中使用props传递数据的实例详解
  20. 二开云海多功能解析系统全开源免授权4.5带插件

热门文章

  1. Linux 用户认证(crypt方式)
  2. 「EasyV」可视化大屏设计|量子传输可视化
  3. CSDN去广告小脚本
  4. 激光三角测量法 原理、优点和不足
  5. 微信小程序项目初始化文件说明
  6. 前端代码规范及最佳实践
  7. C# 面向对象编程 1 面向对象类,静态和非静态的区别,构造函数,new关键字 ,析构函数
  8. Linux系统实战部署私有云网盘
  9. 用C语言编写的英文单词管理小程序
  10. 【YOLOV5-5.x 源码解读】yolov5s.yaml