教你用Python制作属于自己的表白方式,让你2021告别单身
给大家整了一个 表白神器
,这个神器是用 Python 写的一个小脚本,它可以将你女神的照片转换成由字符组成的另一张照片,大概的效果如下。
这是转换前的
这是转换后的(注意放大看)
整个脚本的代码虽然只有 20 行左右,但是大家都知道 Python 脚本的运行是需要 Python 环境的,如果这个脚本中有使用第三方库的话,还需要额外安装一堆 Python 库。这也就意味着,对于一个毫无 Python 使用经验的同学来说,想要把脚本跑起来,还是比较困难的。
刚好今年的情人节,我还没有想到好的 idea,不如把去年的这个工具,使用 tkinter 封装成一个 exe 可执行文件,让所有人都可以使用起来~
先给大家看下这个 exe 程序的成品界面
需要这个 exe 下载链接的关注小编,并申请QQ群:721195303领取
接下来,我会复述一下我是如何在完全没有 GUI 编程基础的情况下,在 2 个小时里把这个程序写出来的。
0. 准备工作
在开始真正写代码之前,需要大概去预研一下,要写出这样一个 GUI 界面,需要准备哪些东西?
绘制原型:想要把软件做成啥样子?找找看有没有工具可以画这种软件原型图的。
学习GUI编程:了解 Python 的GUI编程框架有哪些,选一个最易上手的进行学习
打包成exe:了解并学习如何把 Python 脚本打包成 exe 文件
1. 绘制模型
有写书经验的人就会知道,选好题后,并不是直接就开始写文章了。一般在写之前,要先把书的大纲给列出来。
写 GUI 软件界面也是如此,在真正开发界面之前,必然要先根据功能画出软件的模型图。
在这个原型图上,可以直观看出,软件要实现哪些功能,怎么实现?用下拉选择呢还是手动输入?
软件的原型图绘制,我使用的是之前一直在用的 http://drao.io
这个在线工具。
从原型图上可以看出来,我这个软件要实现的一些基本功能
开始制作
:把源图片转换成字符组成的目标图片重新制作
:若初次制作不满意,可以点此重新制作,这样不用关闭再打开软件放大预览
:转换完成后,会保存到指定目录,点这个按钮就可以直接进行预览下载源码
:可能会有同学想学习这块代码,所以加了这个入口。
2. GUI编程
在今天之前,我都没有学习过 GUI 编程框架,经过简单的了解和对比之后,选择了最轻量的内置 GUI 框架 - tkinter
。
是的,这玩意是内置的。
但是如果你在自己的电脑上 import tkinter
是有可能会报没有找到 tkinter 这个库的。
这是怎么回事呢?
原来,在你安装 Python 解释器的时候,就已经有这个选项,让你自行选择。
那如果你之前,忘了勾选上这个选项,要想重新安装,我有简单搜索了下,好像是比较麻烦的。
不过,好在我想到了一个非常方便快捷的方法,就是在你已经安装了 Python 解释器的情况下,再去双击 Python解释器安装文件,就会弹出这样一个界面,点击 Modify
,就会再次进入上面让你选择 tcl/tk
的界面,勾选之后 ,一路 Next 就会重新在你电脑上安装上 tkinter。
tkinter 安装完成后,就可以根据原型图有针对性的去学习各个控件,经过简单的整理,我需要学习
Label :标签,用来显示文字
Button:按钮,用来触发事件
Combobox:下拉列表,用来选择字体
Canvas:画布,用来显示图片
filedialog:对话框,用于选择图片以及保存路径
messagebox:消息弹窗,用来给用户提示和警告
有了这个学习路径,靠着 Google 观察了几个 Demo 后,直接就可以上手代码了。
3. 打包成exe
打包工具,大家都知道使用 pyinstaller,对于单文件的脚本来说,这个工具还是比较好驾驭的。
使用下面这一条命令,就会生成一个 dist 目录,打开一看会有一个 love-tool.exe 的文件。
$ pyinstaller -F -w --hidden-import=tkinter -i ming.ico -y love_tool.py
其中几个参数的意思是:
-F
:制作独立的可执行程序-w
:运行exe时,不打开控制台窗口-i
:指定软件的图标--hidden-import=tkinter
:导入tkinter包
由于我的 Python 程序中,会引用两个本地的图片,因此生成 exe 后并不能立即执行,得先把我的两张图片先放入到 exe的同级目录。
这个时候就再双击 love-tool.exe
就正常啦
4. 异常的处理
当用户还没有选择源图片的时候,是理论上是无法转换的,因此这种情况下点 开始制作
,就要给了提示
同样的,如果用户还没转换完成,也是不能进行 放大预览
的。
5. 写在最后
这个软件并没有对代码进行讲解,主要是对整个开发流程进行复述,有对代码感兴趣的同学,可以关注小编,并申请QQ群:721195303领取
教你用Python制作属于自己的表白方式,让你2021告别单身相关推荐
- 怎么用python自制计算公式_手把手教你用python制作简易计算器,能够记录你使用的情况...
话不多说,首先先看效果图,它能够记录你在使用过程中的历史,方便你查看是否有错: 接下来就仔细分析一下是如何制作的: 简易计算器 第一步:导入资源库 在过程中使用到了tkinter这个资源库,win+R ...
- 教你用python制作人脸卡通画(附源码)
教你用python制作人脸卡通画(附源码) 效果展示: 让我们开始学习之路: 原理:利用第三方人脸接口将图像人脸化 第三方接口注册地址:https://ai.minivision.cn/#/login ...
- python开发rpa_几步教你用 Python 制作一个 RPA 机器人!
原标题:几步教你用 Python 制作一个 RPA 机器人! 作者 | 阿文 出品 | CSDN(ID:CSDNnews) 头图 | CSDN下载自东方IC 繁琐且重复的工作 在我们日常的工作中,有很 ...
- 5 分钟,教你用 Python 制作一个生日提醒!
大家好,我是安果! 在国内,大部分人都是过农历生日,然后借助日历工具获取农历日期对应的阳历日期,以这一天来过生! 这里还有一个痛点,即:每一年的农历生日对应的阳历日期都不一样 本篇文章将教你利用 Py ...
- python词云代码如何增加字数_3分钟教你用python制作一个简单词云
原标题:3分钟教你用python制作一个简单词云 首先需要安装三个包: 1.制作英文字母的词云 效果图: 代码实现: 其中,test.txt文件内容如下 2.制作中文的词云 效果图: 代码实现: 其中 ...
- python图形设计编程_少儿编程分享:手把手教你用Python制作艺术图片
原标题:少儿编程分享:手把手教你用Python制作艺术图片 在前面的几篇文章中,我们分享了一些用PyGame制作小游戏的教程.我们今天的分享使用的仍然是PyGame,只不过这次不是写游戏啦-我们要用P ...
- python软件设计背景_教你用Python制作微信好友背景墙
目录: 0 引言 1 环境 2 代码实现 3 后记 0 引言 前段时间,微信朋友圈开始出现了一种晒照片新形式,微信好友墙,即在一张大图片中展示出自己的所有微信好友的头像. 效果如下图,出于隐私考虑,这 ...
- Python制作七夕比心表白
每到各种节日,不少小伙伴都会遇到这样一个世纪问题--怎么给心仪的女生/女朋友/老婆一个与众不同的节日惊喜. 这不马上就又到七夕了嘛,我们可以尝试用python给女朋友比心表白! 下面就带大家来领略一下 ...
- 教你用python制作猜数游戏
大家好!我又回来了!今天我教大家怎样用python制作猜数游戏.在此之前我们先了解一下什么是python版猜数游戏. 了解 python版猜数游戏是指您先输入下限值与上限值,然后系统随机生成一个在此范 ...
最新文章
- Xcode中通过删除原先版本的程序来复位App
- AI对人类社会的真正威胁
- Beta阶段第二次冲刺
- Java设计模式-装饰器模式 理论代码相结合
- springMVC获取异步请求的参数,返回异步请求数据(json),跨域访问简单了解,文件上传,与Restful风格
- 面向对象编程(基础简介)
- 华为手机锁屏上显示广告遭用户吐槽 官方回应:不是我们干的
- CSS学习总结3:CSS定位
- Microsoft Azure WebSite创建网站
- MapReduce:出租车数据案例
- MATLAB在线网页链接使用
- win7自带的截图工具不能使用的解决办法
- Mac系统安装consul
- 如何看待2022年秋招后开端岗一片红海?
- MYSQL修改编码为utf8无效往表中插入汉字还是失败的解决方法
- 做直播能有多赚钱,Python告诉你
- eyeon项目总结 音频转换 amr-mp3 web项目路径实践经验(血泪史)
- windbg常用命令
- 阿里云校验用户身份证信息是否是真实有效,姓名和身份证号是参数
- 我的世界Bukkit插件开发(4)——命令
热门文章
- Ajax中的<form>标签
- 【调剂】辽宁工程技术大学控制学科接受硕士调剂
- 论文速读:自监督弱光图像增强:Self-supervised Image Enhancement Network: Training with Low Light Images Only
- 在两个高程点之间如何生成加密点_地形图加密高程点的两种方法CAD和ARCGIS
- 各类分布式存储系统简介
- 使用ceph搭建分布式存储系统
- GEE:基于支持向量机(SVM)进行土地利用分类
- html怎么制作万年历,js+html制作简单日历的方法
- 【MQTT】mqtt 服务器部署--go 生产和消费demo
- 亿信华辰入选中国大数据产业一级市场相关厂商图谱