Python开发GUI工具介绍,实战:将图片转化为素描画!

阳光普照好刺眼

7月华为云社区与csdn联合举办了黑马程序员的征文活动,由于规则简单(保证原创文章、内容为技术类为主、且文章篇幅1000字+即可),所以兴高采烈的参加了活动。
华为云社区活动

本来是抱着打酱油的心态参加活动,没想到今早看到获奖名单时,喜悦中却但这蛋蛋的忧伤…
获奖名单
一等奖一份、二等奖两份、阳光普照奖这个有有些刺眼了20份。想想20把小风扇,是否该在公司附近寻摸一个位置下班了摆个摊卖小风扇,哈哈。在此还是要再感谢下华为云社区的这次活动,奖品丰富的同时还激励大家总结博客文章,大赞!

python开发GUI

今天一位从我公众号开始结识的朋友,询问关于如何快速编写一个exe工具的问题。由于功能简单且之前无相关GUI编程基础,为了快速完成开发,我向他推荐了easygui模块。
python作为胶水语言,几乎没有不能做的事情,但个人一直觉得在GUI开发方面python可以算作是短板了,为什么?因为性能…python的性能问题,往往出现在其他编程语言对其的鄙夷中。但不管如何python在GUI编程上,也是有大量优秀模块的

tkinter

也许有些人不知道这个模块,但如果你安装python后,使用过自带的IDLE,那么你就应该了解它。tkinter作为python自带的GUI模块,IDLE便是通过该模块开发的,也是我比较喜欢的一个模块

easygui

第一次了解这个模块,还是在小甲鱼的《零基础入门学习python》时学习的,该模块对Tkinter进行了二次封装,是的GUI操作变得更为简单,但同时也局限于表层的使用,

wxpython

wxpython是一个Python包装wxWidgets(这是用 C++ 编写),一个流行的跨平台GUI工具包。在wxPython API主要模块包括一个核心模块。
wxpython的优势在速运行速度较快,但编写起来较为复杂,而且界面美化效果较差…

PYQT5

Qt是一套跨平台的C++库,不论是C++、Java还是Python,都可以通过它来实现GUI界面的开发。PyQt5是Qt v5的一套全面的Python绑定。它实现为超过35个扩展模块,并使Python能够在所有支持的平台(包括iOS和Android)上用作C ++的替代应用程序开发语言。
如果你对GUI编程非常感谢兴趣,可以用心学学这个模块,但如果你只是想快速的实现一些GUI的功能,我更推荐大家学习tkinter模块,为什么?

  1. tkinter作为python默认自带的模块库,无需单独安装
  2. tkinter相比于wxpython与pyqt在针对小工具的编程方面,更为高效
  3. tkinter在网上存在大量的快速入门教程
tkinter实战

为了证明tkinter的方便与高效,我将很早前在公司写的一个pythonGUI代码,将图片转化为素描画的小工具,晚上重写了一次,先给大家看看实现效果:
素描画

避坑指南
tktiner添加图片

大家看到,tktiner中附带了一个我的微信二维码,这里只是为了演示tkinter添加图片,没有丝毫推广的味道,哈哈…这里要注意下,tktiner在添加图片时,PhotoImage(file=‘tmp.gif’)要求图片必须是.gif结尾的图片,否则就会报错:

_tkinter.TclError: couldn’t recognize data in image file

关于base64

大家看到我没有加载图片,而是通过base64提前转码好二进制文件后,再进行导入,这样我们打包的exe在使用时,就无需附带一个图片文件了!

import base64

with open('demo.gif','rb') as f:
    data = f.read()
img = base64.b64encode(data)
tkinter打包

既然我们开发的是GUI工具,必须得打包成exe才更好玩啊!但是以往很正常的打包,这次居然报错了:
pyinstaller报错
找了半天才发现,从python 3.6开始,enum34库不再与标准库兼容。该库也是不必要的,因此只需卸载它即可。
pip uninstall enum34
再次执行,大功告成!
exe文件转换

总体代码

最后附上工具的整体代码,可供大家参考:

# -*- coding: utf-8 -*-
# @Author   : 王翔
# @JianShu  : 清风Python
# @Date     : 2019/8/6 01:18
# @Software : PyCharm
# @version  :Python 3.7.3
# @File     : ChangeImage.py


from tkinter.messagebox import *
from tkinter.filedialog import *
from tkinter import *
import base64
from PIL import Image, ImageFilter, ImageOps
import os

img_bs64 = b'R0lGODlhrACsAHAAACH5BAEAAPwALAAAAACsAKwAhwAAAAAAMwAAZgAAmQAAzAAA/wArAAArMwArZgArmQArzAAr/wBVAABVMwBVZgBVmQBVzAB
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值