IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 牛逼了!用Python为她设计专属签名软件! -> 正文阅读

[Python知识库]牛逼了!用Python为她设计专属签名软件!

晚上下班回来,我发现女朋友坐在书桌前“搞事情”。不禁有点惊讶,居然没有葛优躺,居然没有刷B站!!!

但是看她时而抓头,时而写些什么。

我就跑过去问:宝贝,你在干嘛呢?

她说:我今天签名字的时候发现自己写的名字好丑,回来就想着练一下,但是怎么都写不好。

“不要着急,先去刷刷视频歇一下。”

她丧气地走向了沙发...

看她这样,我心疼啊,得做点什么让她高兴一下。灵机一闪,不如就给她做个个性签名软件吧!

思路

说干咱就干!

略微想了一下,这事咱不能蛮干,毕竟不是专业的,搞一个那种实打实的艺术字还是有点难度的。我擅长 Python 啊,我去找个签名网站合作一下就行了。我带着技术,它带着接口,我们俩一拍即合!

打开百度,搜索关键词“艺术签名”,马上出来一堆网站。我随便打开了一个,界面是这样子的:

Image
网站首页

看起来还不错,咱们先看看你是不是一个好搭档(能够提供艺术字的接口)。

我直接打开开发者模式,然后在输入框输入“阿花”,点击生成,界面上出现了艺术字。同时,我们来看看网络请求。在这些网络请求中,我注意到了两个请求,有可能跟我们的接口有关。

Image
网络请求

接下来,咱们一个个查看这两个请求。打开第一个请求的详情,如下所示:

Image
网络请求1

看到这个请求的参数,我就知道这是我们的目标,因为它包含了我们需要发送给网站后台的内容。我们再看一下请求预览便知道,这个请求返回的是一个 html 页面:

Image
网络请求预览

返回的页面大体是对应着这个网页的内容,但是在艺术签名那里留了个空白,没有显示艺术签名。

Image
网络请求响应

我们继续看响应内容,可以观察到那个空白处的html是这样的:

<img?id="showImg"?src="cache/162816844360698.png"/>

这很显然是一个以时间戳命名的图片。

我们再看看第二个请求,是不是请求的内容和这个图片名称一毛一样呢?

网络请求2

这意思很明显了,网站先返回一个页面,然后再请求一个图片,把图片加载到这个页面。

熟悉这个流程之后,我们签名部分就搞定了,即:

  • 将姓名、字体参数发送请求,获取到一个 HTML;

  • 解析 HTML,找到签名图片名称;

  • 发送获取图片请求,得到签名图片。

签名部分搞定之后,剩下的就是画一个界面,让用户输入姓名、选择字体,然后调用签名接口就行。

实现

请求签名图片

这个网站的请求为 post 请求,一共有四个参数:

word:?姓名
fonts:?字体
sizes:?字体大小
fontcolor:?字体颜色
colors:?签名背景颜色

我感觉这个网站的字体大小、背景颜色、字体颜色都很符合我的口味,所以我就不打算改了。只需要输入名字和字体就行。

核心代码为:

url?=?'http://www.kachayv.cn/'
????????data?=?{
????????????'word':?name,
????????????'fonts':?mapping_list[font],
????????????'sizes':?60,
????????????'fontcolor':?'#ffffff',
????????????'colors':?'#FD5668'
????????}
????????result?=?requests.post(url,?data=data)
????????result.encoding?=?'utf-8'
????????html?=?result.text
????????print(html)
????????p?=?re.compile('<img?id="showImg"?src="cache/(.*?)"/>')
????????match?=?p.findall(html)
????????urlretrieve('http://www.kachayv.cn/cache/'?+?match[0],?'./pic.jpg')

这里先获取签名图片的网址,然后使用?urlretrieve?方法保存到本地。

设计和实现软件界面

界面内容也比较简单,我们只需要姓名输入框、字体下拉选择框和一个提交按钮就可以了。我们还是使用 tkinter 来简单画界面。

核心代码为:

def?draw_window(self):
????????self.init_window?=?Tk()
????????self.init_window.title("阿花专属签名设计")
????????self.init_window.geometry("800x500")
????????self.init_window.geometry("+400+200")

????????#?姓名
????????self.name_label?=?Label(self.init_window,?text='鼎鼎大名',?font=('微软雅黑',?16),?fg='black')
????????self.name_label.grid(row=0,?column=0,?columnspan=1)
????????self.name_entry?=?Entry(self.init_window,?font=('宋体',?16))
????????self.name_entry.grid(row=0,?column=1)

????????#?选择字体模式
????????self.font_label?=?Label(self.init_window,?text='字体',?font=('微软雅黑',?16),?fg='black')
????????self.font_label.grid(row=0,?column=5,?columnspan=1)
????????self.combox_list?=?ttk.Combobox(self.init_window,?textvariable=StringVar())
????????self.combox_list.grid(row=0,?column=6,?sticky='W')
????????self.combox_list["value"]?=?("行书签",?"超级艺术签",?"潇洒签",?"手写连笔字",?"行草签",?"花式签",?"温柔女生",?"个性签",?"商务签",?"正楷体",?"楷书签",?"情书签",?"卡通可爱签")
????????self.combox_list.current(0)??#?选择第一个

????????#?触发按钮
????????self.button?=?Button(self.init_window,?text='美好来袭',?font=('微软雅黑',?16),?command=self.get_sign)
????????self.button.grid(row=1,?column=3,?rowspan=2,?sticky='W')

????????#?图片展示
????????self.pic_label?=?Label(self.init_window)
????????self.pic_label.grid(row=3,?column=1,?rowspan=10,?columnspan=5,?sticky='NW')

这里面有一个麻烦的地方,就是网站的字体是类似于“19.ttf”这样子的,我肯定不能把这个显示在界面上,而 tkinter 的下拉选择框比较傻瓜,不能以 key-value 的形式传值。

没办法,不能在一棵树上吊死,我只能在中间加一个转换:在界面上显示人类看得懂的中文,获取到这个中文字体名之后,再跟网站需要的火星文做个映射。

界面运行之后,是这样子的:

Image
运行界面

合体

我们将上面两部分的代码整合在一起,然后再运行,整个操作过程是这样的:

Image
运行

后记

女朋友在沙发上躺了没多久,我把她喊到书房,说:我给你做了一个专属签名软件,你看看合不合胃口?

她尝试了一下,然后转过头来对我说:老公,你真棒!虽然界面丑了点,但是这么短时间就把我的烦恼解决了,谢谢你!

情侣生活就是这样的,平淡而朴实。其实这个问题根本不需要我动手做个丑陋的软件,她直接去网站上操作,几秒钟的事。但是,我花点时间给她做一个专属的,会让她更开心。其实她们并不需要你才华横溢,不需要你有多大本事,只需要你在她们需要的时候给她们温柔一击,在不经意间给她们一个惊喜,这就够了!

说实在的,每次在后台看到一些读者的回应都觉得很欣慰,我想把我收藏的一些编程干货贡献给大家,回馈每一个读者,希望能帮到你们。

干货主要有:

① 2000多本Python电子书(主流和经典的书籍应该都有了)

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤????Python所有知识点汇总(可以弄清楚Python的所有方向和技术)

如果你用得到的话可以直接拿走,有需要的朋友可以关注我的微信公众号:程序员启航,免费获取!

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-12 16:33:29  更:2021-08-12 16:33:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 4:43:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码