奋斗没有终点
好好学习72变,因为将来
没有人能替你阻挡81难 。
生如蝼蚁,当有鸿鹄之志;
命如纸薄,应有不屈之心 。
今天被这句话触动了,所以开篇分享给大家。鸡汤有毒,但有时大家却靠它激励自己继续前行!
python开发GUI
程序员的自我救赎,使用python开发性格分析工具 这篇文章,通过Python编写了GUI的性格分析工具。一位从我公众号开始结识的朋友,询问关于如何快速编写一个exe工具的问题。由于功能简单且之前无相关GUI编程基础,为了快速完成开发,我向他推荐了easygui模块。
python作为胶水语言,几乎没有不能做的事情,但个人一直觉得在GUI开发方面,python可以算作是短板了,为什么?因为性能…python的性能问题,往往出现在其他编程语言对其的鄙夷中。但不管如何python在GUI编程上,也是有大量优秀模块的。
1
tkinter
也许有些人不知道这个模块,但如果你安装python后,使用过自带的IDLE,那么你就应该了解它。tkinter作为python自带的GUI模块,IDLE便是通过该模块开发的,也是我比较喜欢的一个模块。
2
easygui
第一次了解这个模块,还是在小甲鱼的《零基础入门学习python》时学习的,它对Tkinter进行了二次封装,使得GUI操作变得更为简单,但同时也局限于表层的使用,无法自定义更优雅的实现方案。
3
wxpython
wxpython是一个Python对于wxWidgets(这是用 C++ 编写)包装后的产物,算是个流行的跨平台GUI工具包。wxpython的优势在于运行速度较快,但编写起来较为复杂,而且界面美化效果较差…当然有第三方开发的wxFormBuiler拖拽编辑器,能替代部分的底层代码实现。不在乎外观但追求速度的朋友,可以考虑它。
4
PYQT5
Qt是一套跨平台的C++库,不论是C++、Java还是Python,都可以通过它来实现GUI界面的开发。PyQt5是Qt v5的一套全面的Python绑定。它实现为超过35个扩展模块,上千个实现函数。使Python能够在所有支持的平台(包括iOS和Android)上用作C++的替代开发语言。
如果你对GUI编程非常感谢兴趣,可以用心学学这个模块,但如果你只是想快速的实现一些GUI的功能,我更推荐大家学习tkinter模块,为什么?
-
tkinter作为python默认自带的模块库,无需单独安装
-
tkinter相比于wxpython与pyqt在制作小工具的方面,更为高效
-
tkinter在网上存在大量的快速入门教程
tkinter实战
为了证明tkinter的方便与高效,今天来编写一个将图片转化为素描画的小工具,先给大家看看实现效果:
避坑指南
1
tktiner添加图片
大家看到,tktiner中附带了一个我的微信二维码,这里只是为了演示tkinter添加图片,没有丝毫推广的味道,哈哈…这里要注意下,tktiner在添加图片时,PhotoImage(file='tmp.gif')要求图片必须是.gif结尾的图片,否则就会报错:
_tkinter.TclError: couldn’t recognize data in image file
2
关于base64
大家看到我没有加载图片,而是通过base64提前转码好二进制文件后,再进行导入,这样我们打包的exe在使用时,就无需附带一个图片文件了!
1import base64
2
3with open('清风Python.gif','rb') as f:
4 data = f.read()
5img = base64.b64encode(data)
6print(img)
tkinter打包
既然我们开发的是GUI工具,必须得打包成exe才更好玩啊!但是昨天有朋友反馈,打包的地方说的太粗,光看动图不知道该如何操作。那么今天我简单说下。
首先python的打包工具很多,但我一直以来比较喜欢使用pyinstaller,当然大家也可以去尝试cx_freeze、Py2exe等。
首先,我们需要安装pyinstaller:使用pip install pyinstaller。
安装完成,会在python程序根目录的Scripts文件夹下生成pyinstaller.exe。
如果在软件安装时,没有将Scripts添加至系统环境变量,需要手动添加到环境变量的PATH中,否则无法在cmd下使用该命令。
以往很正常的打包,有位朋友反馈使用相同的代码打包失败:
pyinstaller报错
找了半天才发现从python 3.6开始,enum34库不再与标准库兼容。该库也是不必要的,因此只需卸载它即可。pip uninstall enum34
再次执行打包操作即可。