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正则表达式使用经典实例
Jun 21 Python
Python设置默认编码为utf8的方法
Jul 01 Python
pandas中apply和transform方法的性能比较及区别介绍
Oct 30 Python
使用python对文件中的单词进行提取的方法示例
Dec 21 Python
树莓派3 搭建 django 服务器的实例
Aug 29 Python
手机使用python操作图片文件(pydroid3)过程详解
Sep 25 Python
python实现获取单向链表倒数第k个结点的值示例
Oct 24 Python
在Pytorch中使用Mask R-CNN进行实例分割操作
Jun 24 Python
Visual Studio code 配置Python开发环境
Sep 11 Python
基于Python实现体育彩票选号器功能代码实例
Sep 16 Python
python数据抓取3种方法总结
Feb 07 Python
python lambda的使用详解
Feb 26 Python
Python正则表达式中flags参数的实例详解
Apr 01 #Python
Python+Tkinter制作专属图形化界面
Pyhton爬虫知识之正则表达式详解
python 离散点图画法的实现
Python学习之迭代器详解
Python实战之大鱼吃小鱼游戏的实现
OpenCV实现常见的四种图像几何变换
You might like
PHP6 中可能会出现的新特性预览
2014/04/04 PHP
php小技巧之过滤ascii控制字符
2014/05/14 PHP
PHP实现对二维数组某个键排序的方法
2016/09/14 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
2018/02/11 PHP
laravel + vue实现的数据统计绘图(今天、7天、30天数据)
2018/07/31 PHP
PHP7原生MySQL数据库操作实现代码
2020/07/03 PHP
ASP.NET jQuery 实例1(在TextBox里面创建一个默认提示)
2012/01/13 Javascript
CodeMirror2 IE7/IE8 下面未知运行时错误的解决方法
2012/03/29 Javascript
js实现动态改变字体大小代码
2014/01/02 Javascript
jQuery插件之jQuery.Form.js用法实例分析(附demo示例源码)
2016/01/04 Javascript
JavaScript的ExtJS框架中表格的编写教程
2016/05/21 Javascript
微信小程序 获取相册照片实例详解
2016/11/16 Javascript
利用prop-types第三方库对组件的props中的变量进行类型检测
2017/05/02 Javascript
AngularJS中下拉框的基本用法示例
2017/10/11 Javascript
jQuery UI实现动画效果代码分享
2018/08/19 jQuery
vue 根据数组中某一项的值进行排序的方法
2018/08/30 Javascript
Vue图片浏览组件v-viewer用法分析【支持旋转、缩放、翻转等操作】
2019/11/04 Javascript
javascript实现拼图游戏
2021/01/29 Javascript
[03:22]DAC最前线(第二期)—DOTA2亚洲邀请赛主赛场周边及线路探访
2015/01/24 DOTA
python 中文字符串的处理实现代码
2009/10/25 Python
pycharm 使用心得(五)断点调试
2014/06/06 Python
python求众数问题实例
2014/09/26 Python
python使用pil库实现图片合成实例代码
2018/01/20 Python
使用sklearn之LabelEncoder将Label标准化的方法
2018/07/11 Python
python用pandas数据加载、存储与文件格式的实例
2018/12/07 Python
python 实现图片旋转 上下左右 180度旋转的示例
2019/01/24 Python
Flask框架重定向,错误显示,Responses响应及Sessions会话操作示例
2019/08/01 Python
基于Python实现2种反转链表方法代码实例
2020/07/06 Python
美国单身专业人士在线约会网站:EliteSingles
2019/03/19 全球购物
先进事迹报告会感言
2014/01/24 职场文书
《赶海》教学反思
2014/04/20 职场文书
幽默自我介绍演讲稿
2014/08/21 职场文书
导游词之苏州阳澄湖
2019/11/15 职场文书
Python趣味爬虫之用Python实现智慧校园一键评教
2021/05/28 Python
Pandas 数据编码的十种方法
2022/04/20 Python
TypeScript 内置高级类型编程示例
2022/09/23 Javascript