Python开发GUI实战:图片转换素描画工具!

今天被这句话触动了,所以开篇分享给大家。鸡汤有毒,但有时大家却靠它激励自己继续前行!

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

再次执行打包操作即可。

总体代码

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

1# -*- coding: utf-8 -*-

2# @Author   : 王翔

3# @JianShu  : 清风Python

4# @Date     : 2019/11/14 01:18

5# @Software : PyCharm

6# @version  :Python 3.7.3

7# @File     : ChangeImage.py

8

9

10from tkinter.messagebox import *

11from tkinter.filedialog import *

12from tkinter import *

13import base64

14from PIL import Image, ImageFilter, ImageOps

15import os

16

17img_bs64 = b'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'

18

19

20def dodge(a, b, alpha):

21    return min(int(a * 255 / (256 - b * alpha)), 255)

22

23

24def draw(dir_info, blur=25, alpha=1.0):

25    base_dir = os.path.dirname(os.path.abspath(__file__))

26    save_file_name = os.path.join(base_dir, 'final.png')

27    img = Image.open(dir_info)

28    img1 = img.convert('L')  # 图片转换灰色

29    img2 = img1.copy()

30    img2 = ImageOps.invert(img2)

31    for i in range(blur):

32        img2 = img2.filter(ImageFilter.BLUR)

33    width, height = img1.size

34    for x in range(width):

35        for y in range(height):

36            a = img1.getpixel((x, y))

37            b = img2.getpixel((x, y))

38        img1.putpixel((x, y), dodge(a, b, alpha))

39    img1.save(save_file_name)

40    img1.show()

41

42

43class LoginPage(object):

44    def __init__(self, master=None):

45        self.root = master

46        self.root.geometry('%dx%d' % (450, 250))

47        self.page = Frame(self.root)

48        self.Dir = StringVar()

49        self.Port = StringVar()

50        self.path = StringVar()

51        self.dir_info = StringVar()

52        self.create_page()

53

54    def create_page(self):

55        self.page.grid()

56        with open('tmp.gif', 'wb+') as f:

57            f.write(base64.b64decode(img_bs64))

58        self.photo = PhotoImage(file='tmp.gif')

59        os.remove('tmp.gif')

60        Label(self.page, text='''

61

62        公众号: 清风Python

63        作者  : 王翔 

64        时间  :2019-11-14

65        工具  :Python 3. 7. 3 Tkinter        

66        详情  : 图片转素描画工具''', justify=LEFT).grid(row=0, column=0, columnspan=2, rowspan=1, stick=NW)

67        Label(self.page, text="图片路径").grid(row=3, column=0, sticky=W, pady=5)

68        self.dir_info = Entry(self.page, textvariable=self.path)

69        self.dir_info.grid(row=3, column=1, columnspan=1, padx=20)

70        Button(self.root, text="选择路径", command=lambda: self.select_path()).grid(row=0, column=0, sticky=S, padx=20,

71                                                                                pady=5)

72        Label(self.page, image=self.photo).grid(row=0, column=2)

73        Button(self.page, text='转换', command=self.login_check, width=10).grid(row=3, column=2, padx=10, pady=5)

74

75    def select_path(self):

76        path_ = askopenfilename(filetypes=[("file", "*.*")])

77        self.path.set(path_)

78

79    def login_check(self):

80        img_dir = self.dir_info.get()

81        if img_dir == "":

82            showinfo(title='错误', massage='路径错误')

83        else:

84            draw(img_dir)

85

86

87root = Tk()

88root.title('素描画转化工具')

89LoginPage(root)

90root.mainloop()

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容