Python+Tkinter打造签名设计工具


Posted in Python onApril 01, 2022

1.概述

前面我们已经详细的介绍了,怎么使用Tkinter创建属于自己的窗口界面了。整体布局呢我们已经搭建起来,唯一没有实现的一个步骤就是,用户每输入一个名字,就会将个性签名一并显示在这个窗口界面中,今天我就带着大家一起完成这个需求。

今天的文章可以看成是爬虫+Tkinter窗口的结合。昨天我们完成了Tkinter窗口搭建过程,今天需要做的就是利用爬虫得到我们最终想要的个性化签名。网上在线签名网站特别多,我也是任意选取了百度首页排在第一位的那个在线签名网站

2.网页分析

1)网页缺陷

这个文章有一个不好的地方,就是你输入一些空格,网站就给你显示一个空白(如图所示)。

Python+Tkinter打造签名设计工具

我们在写代码的时候,可不能这样,要避免这个问题的发生。我的想法是这样的,如果你输入为空,我就弹窗提醒你。

Python+Tkinter打造签名设计工具

2)页面分析

从图中可以发现,我们在输入框每输入一个名字,进行查询后。相当于给服务器发送了一次post请求,post请求的表单共有四个,从图中可以很清晰地看出来。总的来说,这个网站还是挺简单的,会一些简单的爬虫都可以完成,我这里就不详细介绍了。

Python+Tkinter打造签名设计工具

3)数据的获取

怎么查看网页源代码,相信大家不用我说了吧。我们想要获取的数据,一般的网址是会直接显示在源代码中,比如说今天这个网站,但是对于大多数网站就不一定了。通过定位我们发现,最终想要的个性签名图片,位于class="tu"div标签中,我已经用红色方框标注出来了,由于我们只是获取这一条信息,直接使用正则表达式来获取好了。

Python+Tkinter打造签名设计工具

3.完整代码

通过上述说明,我们已经将准备工作做好了,现在可以书写代码了。这里有几个知识点昨天还没有讲述到,就简单提一下。

entry.get()获取用户输入。我们在输入框输入什么,这里可以捕捉到;

messagebox.showinfo()能够完成弹窗提示,和VBA有点像;

from tkinter import *
from tkinter import messagebox
import requests
import re
from PIL import Image,ImageTk

def func():
    # 获取窗口输入的名字
    name = entry.get()
    print(name)
    # 去掉空格
    name = name.strip()
    # 判断:如果用户输入为空,显示
    if name == "":
        messagebox.showinfo("提示",message="请输入完整的名字")
    else:
        # 请求网站,获取图片
        data = {
            'word': name,
            'sizes': '60',
            'fonts': 'yqk.ttf',
            'fontcolor': ''#000000'
        }
        url = "http://www.uustv.com/"
        result = requests.post(url,data)
        result.encoding = "utf-8"
        html = result.text
        pattern = r'<img src="(.*?)"/></div>'
        img_path = re.findall(pattern,html)[0]
        img_url = url + img_path 
        # 写入到本地
        with open(f'{name}的签名照.gif', "wb") as f:
            f.write(requests.get(img_url).content)
        # 将图片展示在窗口上
        bm = ImageTk.PhotoImage(file=f'{name}的签名照.gif')
        label2 = Label(root,image=bm)
        label2.bm = bm
        label2.grid(row=3,columnspan=2)

# 创建窗口:实例化一个窗口对象。
root = Tk()

# 窗口大小
root.geometry("540x305+374+182")

#  窗口标题
root.title("我的个性签名设计")

# 添加标签控件
label = Label(root,text="签名:",font=("宋体",25),fg="red")
# 定位
label.grid()

# 添加输入框
entry = Entry(root,font=("宋体",25),fg="black")
entry.grid(row=0,column=1)

# 添加点击按钮
button = Button(root,text="签名设计",font=("宋体",25),fg="blue",command=func)
button.grid(row=1,column=1)

# 显示窗口
root.mainloop()

效果如下:

Python+Tkinter打造签名设计工具

4.总结

为了更好的在不懂行的面前装逼,我最终也将程序使用pyinstaller打包了。这样你就可以发给那些文科妹子装装逼,不是很好吗?也会一并提供给大家。

本文有两个遗留问题,可以交给大家解决一下。其一,原网站可以进行签名设计的字体切换,我这个在代码中没有体现出来,你可以自行研究一下。其二,使用pyinstaller打包后的程序,虽然可以运行,但是好慢呀,大家自行下去思考。

以上就是Python+Tkinter打造签名设计工具的详细内容,更多关于Python Tkinter签名设计的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python httplib,smtplib使用方法
Sep 06 Python
python获取本机外网ip的方法
Apr 15 Python
Python中利用sqrt()方法进行平方根计算的教程
May 15 Python
Python实现的简单hangman游戏实例
Jun 28 Python
Python实现的爬取网易动态评论操作示例
Jun 06 Python
pycharm 在windows上编辑代码用linux执行配置的方法
Oct 27 Python
python脚本当作Linux中的服务启动实现方法
Jun 28 Python
ZABBIX3.2使用python脚本实现监控报表的方法
Jul 02 Python
Python Django中的STATIC_URL 设置和使用方式
Mar 27 Python
Python爬取酷狗MP3音频的步骤
Feb 26 Python
Python matplotlib可视化之绘制韦恩图
Feb 24 Python
分享几种python 变量合并方法
Mar 20 Python
Python正则表达式中flags参数的实例详解
Apr 01 #Python
Python+Tkinter制作专属图形化界面
Pyhton爬虫知识之正则表达式详解
python 离散点图画法的实现
Python学习之迭代器详解
Python实战之大鱼吃小鱼游戏的实现
OpenCV实现常见的四种图像几何变换
You might like
新安装的MySQL数据库需要注意的安全知识
2008/07/30 PHP
php xml-rpc远程调用
2008/12/19 PHP
PHP中删除变量时unset()和null的区别分析
2011/01/27 PHP
PHP中file_exists()判断中文文件名无效的解决方法
2014/11/12 PHP
PHP的压缩函数实现:gzencode、gzdeflate和gzcompress的区别
2016/01/27 PHP
零基础php编程好学吗
2019/10/11 PHP
PHP文件操作简单介绍及函数汇总
2020/12/11 PHP
基本jquery的控制tabs打开的数量的代码
2010/10/17 Javascript
Javascript中自动切换焦点实现代码
2012/12/15 Javascript
js获取select标签的值且兼容IE与firefox
2013/12/30 Javascript
js控制网页背景音乐播放与停止的方法
2015/02/06 Javascript
JavaScript获取网页表单提交方式的方法
2015/04/02 Javascript
ECMA5数组的新增方法有哪些及forEach()模仿实现
2015/11/03 Javascript
jQuery随手笔记之常用的jQuery操作DOM事件
2015/11/29 Javascript
什么是JavaScript中的结果值?
2016/10/08 Javascript
浅谈Angular4实现热加载开发旅程
2017/09/08 Javascript
bootstrap table实现双击可编辑、添加、删除行功能
2017/09/27 Javascript
JS动画实现回调地狱promise的实例代码详解
2018/11/08 Javascript
Vue事件处理原理及过程详解
2020/03/11 Javascript
js实现数据导出为EXCEL(支持大量数据导出)
2020/03/31 Javascript
Node.JS如何实现JWT原理
2020/09/18 Javascript
[01:31:22]Ti4 循环赛第四日附加赛LGD vs Mouz
2014/07/13 DOTA
python使用pyhook监控键盘并实现切换歌曲的功能
2014/07/18 Python
Python迭代用法实例教程
2014/09/08 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
2019/07/17 Python
python利用openpyxl拆分多个工作表的工作簿的方法
2019/09/27 Python
Django nginx配置实现过程详解
2020/09/10 Python
FORZIERI澳大利亚站:全球顶级奢华配饰精品店
2016/12/31 全球购物
文员个人求职自荐信
2013/09/21 职场文书
应聘医学检验人员自荐信
2013/09/27 职场文书
医院学雷锋活动策划方案
2014/02/15 职场文书
万年牢教学反思
2014/02/15 职场文书
2014年预备党员群众路线教育实践活动对照检查材料思想汇报
2014/10/02 职场文书
初中生考试作弊检讨书
2014/12/14 职场文书
高中生毕业评语
2014/12/30 职场文书
家长通知书家长意见
2015/06/03 职场文书