京公网安备 11010802034615号
经营许可证编号:京B2-20210330
作者:闲欢
来源:Python 技术
晚上下班回来,我发现女朋友坐在书桌前“搞事情”。不禁有点惊讶,居然没有葛优躺,居然没有刷B站!!!
但是看她时而抓头,时而写些什么。
我就跑过去问:宝贝,你在干嘛呢?
她说:我今天签名字的时候发现自己写的名字好丑,回来就想着练一下,但是怎么都写不好。
“不要着急,先去刷刷视频歇一下。”
她丧气地走向了沙发...
看她这样,我心疼啊,得做点什么让她高兴一下。灵机一闪,不如就给她做个个性签名软件吧!
说干咱就干!
略微想了一下,这事咱不能蛮干,毕竟不是专业的,搞一个那种实打实的艺术字还是有点难度的。我擅长 Python 啊,我去找个签名网站合作一下就行了。我带着技术,它带着接口,我们俩一拍即合!
打开百度,搜索关键词“艺术签名”,马上出来一堆网站。我随便打开了一个,界面是这样子的:
网站首页
看起来还不错,咱们先看看你是不是一个好搭档(能够提供艺术字的接口)。
我直接打开开发者模式,然后在输入框输入“阿花”,点击生成,界面上出现了艺术字。同时,我们来看看网络请求。在这些网络请求中,我注意到了两个请求,有可能跟我们的接口有关。
网络请求
接下来,咱们一个个查看这两个请求。打开第一个请求的详情,如下所示:
网络请求1
看到这个请求的参数,我就知道这是我们的目标,因为它包含了我们需要发送给网站后台的内容。我们再看一下请求预览便知道,这个请求返回的是一个 html 页面:
网络请求预览
返回的页面大体是对应着这个网页的内容,但是在艺术签名那里留了个空白,没有显示艺术签名。
网络请求响应
我们继续看响应内容,可以观察到那个空白处的html是这样的:
<img id="showImg" src="cache/162816844360698.png"/>
这很显然是一个以时间戳命名的图片。
我们再看看第二个请求,是不是请求的内容和这个图片名称一毛一样呢?
网络请求2
这意思很明显了,网站先返回一个页面,然后再请求一个图片,把图片加载到这个页面。
熟悉这个流程之后,我们签名部分就搞定了,即:
签名部分搞定之后,剩下的就是画一个界面,让用户输入姓名、选择字体,然后调用签名接口就行。
这个网站的请求为 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 的形式传值。
没办法,不能在一棵树上吊死,我只能在中间加一个转换:在界面上显示人类看得懂的中文,获取到这个中文字体名之后,再跟网站需要的火星文做个映射。
界面运行之后,是这样子的:
运行界面
我们将上面两部分的代码整合在一起,然后再运行,整个操作过程是这样的:
运行
女朋友在沙发上躺了没多久,我把她喊到书房,说:我给你做了一个专属签名软件,你看看合不合胃口?
她尝试了一下,然后转过头来对我说:老公,你真棒!虽然界面丑了点,但是这么短时间就把我的烦恼解决了,谢谢你!
情侣生活就是这样的,平淡而朴实。其实这个问题根本不需要我动手做个丑陋的软件,她直接去网站上操作,几秒钟的事。但是,我花点时间给她做一个专属的,会让她更开心。其实她们并不需要你才华横溢,不需要你有多大本事,只需要你在她们需要的时候给她们温柔一击,在不经意间给她们一个惊喜,这就够了!
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
【核心关键词】大数据、零售商、消费者、供应链、运营、企业、产品、客户、数据模型、大数据平台、数据开发、系统运维、业务逻 ...
2026-06-26在物流配送、供应链履约、终端供货等业务场景中,送货率是衡量企业履约能力、服务质量、供应链稳定性的核心业务指标,直接关联客 ...
2026-06-26 很多数据分析师精通描述性统计,能熟练计算均值、中位数、标准差,但当被问到“用500个样本如何推断10万用户的真实满意度” ...
2026-06-26在数字化管理与数据化运营体系中,指标是连接原始数据与业务决策的核心载体。零散的原始数据只是无意义的数值堆砌,无法直接反映 ...
2026-06-25在Excel数据汇总、财务统计、业务复盘等日常办公场景中,经常需要完成逐行相乘、整体汇总求和的计算需求,最典型的场景就是:单 ...
2026-06-25 很多数据分析师沉迷于复杂的机器学习算法,却忽略了数据分析最基础也最核心的能力——描述性统计。事实上,80%的商业分析问 ...
2026-06-25【核心关键词】主数据、资产、供应商、现金流、企业、精细化、集团、数字化、中国、数据质量、数据管理、经营管理、地产行业、 ...
2026-06-24在数据分析、假设检验、AB测试、学术研究等统计场景中,显著水平(α)与P值(P-value)是判断统计结果是否具有统计学意义的两个 ...
2026-06-24小李刚入职了一家互联网公司的运营部门。第一次参加业务复盘会,运营主管问了一个看似简单的问题:“这个月新用户留存率下降了5 ...
2026-06-24在数字化转型全面渗透的产业背景下,数据分析已成为互联网、金融、零售、制造等几乎所有行业的核心岗位能力。很多初学者对数据分 ...
2026-06-23在企业并购、股权定价、投融资评估、资产核算等资本市场核心场景中,市场法是应用最广泛、市场认可度最高的企业价值评估方法。传 ...
2026-06-23 许多数据分析师精通Excel函数和SQL查询,但当面对一张上万行的销售明细表,要快速回答“哪个地区销量最高”“哪款产品增长最 ...
2026-06-23【核心关键词】运营、证书、金融、客户、产品、软件、销售额、量化、科技、数据分析、金融行业、证券类软件、业务流程、金融机 ...
2026-06-22在企业方案选型、产品迭代评审、供应商筛选、运营效果复盘等决策场景中,单一指标的优劣判断往往无法支撑科学决策。一套转化效果 ...
2026-06-22 很多数据分析师掌握了Excel函数、会写SQL查询,但当被问到“数据从哪里来”“数据加工有哪些步骤”“如何使用分析工具连接数 ...
2026-06-22【核心关键词】软件、洞察力、大数据、产品、经验、硬件、流量、创新、决策、数据安全、网络安全、数据分析、决策制定、数据挖 ...
2026-06-18在方案选型、效果复盘、产品评估、供应商筛选等各类业务决策场景中,仅凭单一指标下结论往往会陷入 “以偏概全” 的误区。多维度 ...
2026-06-18 很多数据分析师精通Excel单元格操作,但当被问到“表结构数据的基本处理单位是什么”“字段和记录的本质区别”“为什么表结 ...
2026-06-18在数据分析、用户运营与业务增长的工作体系中,漏斗拆解是最基础也最高频的问题定位方法。很多业务场景下,我们只能看到最终的转 ...
2026-06-17在数据库开发、数据清洗与报表统计场景中,数值类型转换为日期是高频刚需操作。业务系统常以 Unix 时间戳、整型日期(如20240617 ...
2026-06-17