7511|4

2169

帖子

8

TA的资源

五彩晶圆(初级)

楼主
 

python基于wxpyhon的图形脚本打包成exe无法运行的解决办法 [复制链接]

本帖最后由 wsmysyn 于 2018-7-7 14:52 编辑

最近在学习用python基于wxpython的GUI图形库开发一个上位机软件。wxpython是一个python语言的开源GUI图形库,具体可以百度一下。
以前用过C#写过上位机,比较简单,直观。主要问题是VS2017太大了(C#桌面程序包+ C++部分就占用了磁盘10GB以上的空间,而且安装时间也比较长),最主要的是每次修改都需要编译。后来发现了wxpython -- python语言的开源GUI图形库,功能很强大,还是python语言的,python的强大不用说了,我已经慢慢把以前C/C++的小工具和未来的图形程序都转移到python上开发,简直不要太爽。可以很优雅的写图形程序了。。

最近遇到了一个比较奇怪的问题:
问题现象:直接运行python脚本没有问题,软件可以正常运行。但是使用pyinstaller打包成exe的程序后无法运行。由于这个上位机需要给别人使用的,所以最好是打包成单个文件,直接双击就能运行,就ok了。而不需要别人安装python和一堆包。。。

问题定位:使用pyinstaller打包的时候加上了 -d -c 参数,即显示调试信息在控制台上。发现运行exe后提示no mudole named _adv。进一步发现是我在使用了richtextctrl控件之后产生了这个问题。为了验证这个想法,我程序里不实例化任何richtextctrl控件,只是import wx.richtext这个包确认只要引入就会产生这个问题,不引入这个包就没有问题。

解决办法:既然是缺失这个包,那就引入一下吧。import wx._adv之后提示了_html包缺失,那么又import wx._html这个包之后,我的上位机软件终于正常了。最后 用pyinstaller -F -w生成单文件,并且去掉黑窗口,这样运行时不会看到黑窗口,和正常的UI软件一样优雅
另外如果要永久解决这个问题的话,到wx的包的目录中修改richtext.py文件,在该文件中
import _adv, _html
两个模块就可以了
这估计是他的bug,或者pyinstaller的bug。。。

最后分享一下我的环境
windows10:
1、pip install wxpython即可现在版本是4.0.3(存在以上的问题,其他版本没有尝试过)
2、wxFormBuilder 一个开源的基于wx图形库的可视化IDE,可以用来制作漂亮的窗口布局,可直接生成python/C++/php/lua/xrc等语言的代码。在自己的代码中继承写好的图形类即可,控件的事件,只需在自己的代码override即可。。
虽然和宇宙级IDE vs比功能差好多,不过简单的图形界面已经完全可以够用了

Ubuntu linux:
1、sudo apt-get install python-wxtools即可,wx版本应该是3.0.1
2、wxFormBuilder也有linux版本的,不过我没有试过
3、可能需要到的python包, python-dev, gcc/g++


最后上张图吧,比较简陋



下面是wxformbuilder的截图,上手还是很快的。








最新回复

python开发图形的ide用起来方便吗  详情 回复 发表于 2018-7-9 11:58
点赞 关注(2)
个人签名坐而言不如起而行
 
 

回复
举报

6042

帖子

195

TA的资源

版主

沙发
 
不错,感谢分享!
 
 
 

回复

2169

帖子

8

TA的资源

五彩晶圆(初级)

板凳
 
lcofjp 发表于 2018-7-7 14:43
不错,感谢分享!

个人签名坐而言不如起而行
 
 
 

回复

9809

帖子

24

TA的资源

版主

4
 
python开发图形的ide用起来方便吗
 
 
 

回复

2169

帖子

8

TA的资源

五彩晶圆(初级)

5
 
littleshrimp 发表于 2018-7-9 11:58
python开发图形的ide用起来方便吗

感觉还可以。wxformbuilder软件不大才11.5M,也有linux版本的。

优点:
1、软件小,基本常用的窗口控件都有,能覆盖到VS上C#自带的60-70%左右的控件;还有一些VS上没有的,比如StyledText语法加亮控件
2、上手快,百度加自己瞎点,基本上就能搞出来一个简单的界面了,一键生成C++/python代码
3、支持wx的AUI(具体是什么功能没研究过,还有一个wxSmith  IDE,不支持wx的AUI)
4、几个基于wx的IDE中算是比较好的了,其他我也下载了二三个,只是版本太老,好像安装不上
5、软件界面布局的自适应布局比较强,所见即所得。比纯代码写界面方便的多。

缺点:
1、不能像VS 中C#  VB.net那样随意拖动控件到任意位置,或者改变任意大小。需要配合各种sizer来布局控件的位置,
2、我在windows10上使用某些控件经常会导致软件死掉,我已经遇到不下10次了
3、他的statusbar好像有bug,只要加入这个python脚本会提示出错,还没有仔细检查是什么问题,这个控件可有可无
4、控件的事件要比VS中对应的孔健事件少一些,二八定律,少的那些基本上很少用到

不能算作缺点的缺点
1、软件生成的代码文件不能修改,每次生成,文件都是覆盖掉的;好处就是,代码不会混乱
与此相反的是wxSmith IDE生成的代码文件可以添加自己的代码,不会被删除掉。。两个各有利弊。

个人签名坐而言不如起而行
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表