Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >牛逼!用 Python 为她设计专属签名软件!

牛逼!用 Python 为她设计专属签名软件!

作者头像
AirPython
发布于 2021-08-27 09:14:22
发布于 2021-08-27 09:14:22
86100
代码可运行
举报
文章被收录于专栏:Python 自动化Python 自动化
运行总次数:0
代码可运行

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

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

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

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

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

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

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

思路

说干咱就干!

略微想了一下,这事咱不能蛮干,毕竟不是专业的,搞一个那种实打实的艺术字还是有点难度的

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

网站首页

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

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

网络请求

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

网络请求1

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

网络请求预览

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

网络请求响应

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<img id="showImg" src="cache/162816844360698.png"/>

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

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

网络请求2

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

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

  • 将姓名、字体参数发送请求,获取到一个 HTML;
  • 解析 HTML,找到签名图片名称;
  • 发送获取图片请求,得到签名图片。

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

实现

请求签名图片

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
word: 姓名
fonts: 字体
sizes: 字体大小
fontcolor: 字体颜色
colors: 签名背景颜色

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

核心代码为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 来简单画界面。

核心代码为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 的形式传值。

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

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

运行界面

合体

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AirPython 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【收藏】使用Python暴力破解附近局域网WiFi密码
本文将记录学习下如何通过 Python 脚本实现 WIFI 密码的暴力破解,从而实现免费蹭网。
释然IT杂谈
2021/11/16
10.4K0
【收藏】使用Python暴力破解附近局域网WiFi密码
用 Python 破解 WiFi 密码,太刺激了!
这是「进击的Coder」的第 720 篇技术分享 作者:Tr0e 来源:blog.csdn.net/weixin_39190897/article/details/119778471 “ 阅读本文大概需要 13 分钟。 ” 前言 本文将记录学习下如何通过 Python 脚本实现 WIFI 密码的暴力破解,从而实现免费蹭网。 无图形界面 先来看看没有图形界面版的爆破脚本。 WIFI 爆破 import pywifi from pywifi import const import time import d
崔庆才
2022/09/13
47.9K4
用 Python 破解 WiFi 密码,太刺激了!
python实战篇(六)---打造自己的签名软件
Python实战篇重在实战,今天,我们就来设计一款自己的签名软件,稍微涉及一点爬虫(简单点说就是从网页上爬取你想要的数据,然后保存下来自己用,切记不要违法使用哦)的东西,最后的成果就是输入你想要签名的名字,点击设计签名,最终生成一幅签好名的图画,效果还不错哦!
用户5410712
2022/06/01
6890
python实战篇(六)---打造自己的签名软件
软件测试|Python帮手残党写出漂亮签名
我们的工作是每天敲键盘,基本上很少用到手来写字了,一旦提起笔,写出来的字往往也不堪入目,那万一到了我们需要签字的时候,怎么办,手写的字简直难看,老话说得好,字如其人?最起码也得把自己的名字写漂亮,所以我们可以考虑在艺术字设计网站设计一下自己的签名,但是,能不花钱我们就不会去花钱,而且还要把自己的签名保存成gif图保存到本地,看着gif图跟着写,练练签名肯定没问题的。怎么免费获取,肯定是使用我们的神器——Python啦。
霍格沃兹测试开发Muller老师
2023/03/05
4850
Python攻防-暴力激活成功教程附近局域网WIFI密码「建议收藏」
本文将记录学习下如何通过 Python 脚本实现 WIFI 密码的暴力激活成功教程,从而实现免费蹭网。
全栈程序员站长
2022/09/23
2.9K0
Python攻防-暴力激活成功教程附近局域网WIFI密码「建议收藏」
用 Python 制作一个艺术签名小工具,给自己设计一个优雅的签名
生活中有很多场景都需要我们签字(签名),如果是一些不重要的场景,我们的签名好坏基本无所谓了,但如果是一些比较重要的场景,如果我们的签名比较差的话,就有可能给别人留下不太好的印象了,俗话说字如其人嘛,本文我们使用 Python 来制作一个艺术签名小工具,给自己设计一个优雅的签名。
Python小二
2020/08/18
1.2K0
用 Python 制作一个艺术签名小工具,给自己设计一个优雅的签名
Python-GUI签名
Tkinter:Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口
织幻妖
2022/12/21
6720
Python 按钮(BUTTON)样式属性说明
Python tkinter 按钮组件用于tkinter GUI里添加按钮,按钮可以添加文本和图像。当按钮按下时,可以执行指定的函数。
matinal
2023/10/26
7410
Python 按钮(BUTTON)样式属性说明
tkinter实例
tkinter实例 import tkinter as tk import hashlib import time LOG_LINE_NUM = 0 class MY_GUI():     def __init__(self, init_window_name):         self.init_window_name = init_window_name     # 设置窗口     def set_init_window(self):         self.init_window_na
py3study
2018/08/03
1.9K0
python tkinter 设计指南
pack() 是一种较为简单的布局方法,在不使用任何参数的情况下,它会将控件以添加时的先后顺序,自上而下,一行一行的进行排列,并且默认居中显示。pack() 方法的常用参数如下所示:
独元殇
2023/03/21
7.6K0
掌握一项装逼的技能
pip install jieba(结巴)#真搞不懂写这个模块的人,怎么用拼音来写,这个模块有点容易让人误解,加注释
大家一起学编程
2021/03/27
3980
Python GUI编程:Tkinter
Python里的图形化界面(GUI)模块主要有Tkinter(python自带)、PyQt、wxPython,我们这节主要讲解Tkinter组件:
小雨coding
2020/08/03
7.7K0
利用python制作一个翻译工具
之前基于有道翻译的翻译工具,有访问限制,超过一定次数后会提示访问过于频繁,后来发现百度翻译API,如果月翻译字符少于200万是不收取费用的,所以可以利用百度通用翻译API做一个翻译工具
冰霜
2022/03/15
7620
利用python制作一个翻译工具
Get了!用Python制作数据预测集成工具 | 附代码
经过算法比较,发现这里我们选择使用sklearn简单的多元回归进行拟合数据可以达到比较好的效果。
AI科技大本营
2020/08/24
1.5K0
Get了!用Python制作数据预测集成工具 | 附代码
Tkinter教程(每天半小时,3天彻底掌握Tkinter)day2
grid() 方法相比 pack() 方法来说要更加灵活,以网格的方式对组件进行布局管理,让整个布局显得非常简洁、优雅。
红目香薰
2022/11/30
4.5K0
Tkinter教程(每天半小时,3天彻底掌握Tkinter)day2
简单!用python制作一款属于自己的新闻软件!
上期讲解了一篇简单的新闻爬虫程序,今日讲解如何结合上一期内容进行制作一个简单的GUI可视化窗口,对爬取的内容进行展示。
Python与Excel之交
2021/08/05
9590
tkinter带界面实现指定目录生成器
路径是自己设定好的,然后输入要生成的文件夹数量,然后再点相应的按钮就可以了 下面放上源码,有需要的可以自己进行修改:
小海怪的互联网
2019/12/26
9760
tkinter带界面实现指定目录生成器
Python tkinter 制作一个经典的登录界面和点击事件
Tkinter(即 tk interface) 是 Python 标准 GUI 库,简称 “Tk”;从本质上来说,它是对 TCL/TK 工具包的一种 Python 接口封装。 Tkinter 是 Python 自带的标准库,因此无须另行安装,它支持跨平台运行,不仅可以在 Windows 平台上运行,还支持在 Linux 和 Mac 平台上运行。
松鼠爱吃饼干
2022/12/05
3K0
Python tkinter 制作一个经典的登录界面和点击事件
Python Tkinter Gui 常用组件介绍 基本使用
我们编写的Python代码会调用内置的Tkinter,Tkinter封装了访问Tk的接口; Tk是一个图形库,支持多个操作系统,使用Tcl语言开发; Tk会调用操作系统提供的本地GUI接口,完成最终的GUI;
EXI-小洲
2022/12/13
3.4K0
Python Tkinter Gui 常用组件介绍 基本使用
python编写的GUI表白小程序
# Tkinter是Python的标准GUI(图形用户界面)库 ,Python使用Tkinter可以快速的创建GUI应用程序 from tkinter import * from tkinter import messagebox def closeWindow(): messagebox.showinfo(title="警告",message="不许关闭,好好回答") # messagebox.showerror(title="警告",message="不许关闭,好好回答") r
py3study
2020/01/13
2.1K0
相关推荐
【收藏】使用Python暴力破解附近局域网WiFi密码
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验