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的Tornado框架中的日志的方法
May 02 Python
Python数据类型学习笔记
Jan 13 Python
Python 实现数据库更新脚本的生成方法
Jul 09 Python
python @property的用法及含义全面解析
Feb 01 Python
便捷提取python导入包的属性方法
Oct 15 Python
python2和python3的输入和输出区别介绍
Nov 20 Python
对python产生随机的二维数组实例详解
Dec 13 Python
OpenCV3.0+Python3.6实现特定颜色的物体追踪
Jul 23 Python
Python搭建代理IP池实现存储IP的方法
Oct 27 Python
使用PyWeChatSpy自动回复微信拍一拍功能的实现代码
Jul 02 Python
selenium+headless chrome爬虫的实现示例
Jan 08 Python
完美处理python与anaconda环境变量的冲突问题
Apr 07 Python
Python正则表达式中flags参数的实例详解
Apr 01 #Python
Python+Tkinter制作专属图形化界面
Pyhton爬虫知识之正则表达式详解
python 离散点图画法的实现
Python学习之迭代器详解
Python实战之大鱼吃小鱼游戏的实现
OpenCV实现常见的四种图像几何变换
You might like
WIN98下Apache1.3.14+PHP4.0.4的安装
2006/10/09 PHP
PHP中__get()和__set()的用法实例详解
2013/06/04 PHP
PHP使用正则表达式清除超链接文本
2013/11/12 PHP
PHP zip扩展Linux下安装过程分享
2014/05/05 PHP
PHP基于工厂模式实现的计算器实例
2015/07/16 PHP
php 判断页面或图片是否经过gzip压缩的方法
2017/04/05 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
2017/11/14 PHP
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
Git命令之分支详解
2021/03/02 PHP
实现复选框全选/全不选切换
2006/12/23 Javascript
javascript 处理HTML元素必须避免使用的一种方法
2009/07/30 Javascript
js 中将多个逗号替换为一个逗号的代码
2014/06/07 Javascript
AngularJS中使用HTML5手机摄像头拍照
2016/02/22 Javascript
JavaScript String 对象常用方法详解
2016/05/13 Javascript
Bootstrap基本插件学习笔记之Alert警告框(20)
2016/12/08 Javascript
jquery仿京东侧边栏导航效果
2017/03/02 Javascript
详解AngularJs ui-router 路由的简单介绍
2017/04/26 Javascript
微信小程序图片横向左右滑动案例
2017/05/19 Javascript
js时间戳转yyyy-MM-dd HH-mm-ss工具类详解
2019/04/30 Javascript
JS实现简易留言板增删功能
2020/02/08 Javascript
Vue自动构建发布脚本的方法示例
2020/07/24 Javascript
在vue中嵌入外部网站的实现
2020/11/13 Javascript
Django的URLconf中使用缺省视图参数的方法
2015/07/18 Python
python实现数据导出到excel的示例--普通格式
2018/05/03 Python
python实现淘宝秒杀脚本
2020/06/23 Python
pandas dataframe的合并实现(append, merge, concat)
2019/06/24 Python
python3图片文件批量重命名处理
2019/10/31 Python
详解Python中的format格式化函数的使用方法
2019/11/20 Python
python如何通过pyqt5实现进度条
2020/01/20 Python
Python中sys模块功能与用法实例详解
2020/02/26 Python
Python Django搭建网站流程图解
2020/06/13 Python
屈臣氏官方旗舰店:亚洲享负盛名的保健及美妆零售商
2019/03/15 全球购物
.NET初级开发工程师面试题(包括Javascript)
2012/08/22 面试题
大专生工程监理求职信
2013/10/04 职场文书
初中班级口号
2014/06/09 职场文书
万能检讨书开头与结尾怎么写
2015/02/17 职场文书