python实战篇(六)---打造自己的签名软件

2022-06-01 15:58:14 浏览数 (1)

Python实战篇重在实战,今天,我们就来设计一款自己的签名软件,稍微涉及一点爬虫(简单点说就是从网页上爬取你想要的数据,然后保存下来自己用,切记不要违法使用哦)的东西,最后的成果就是输入你想要签名的名字,点击设计签名,最终生成一幅签好名的图画,效果还不错哦!

软件运行操作演示

01

一、运行软件

二、输入名字

三、显示效果

关键函数分析一

02

爬虫函数:

代码语言:javascript复制
def download():
    startUrl = 'http://www.uustv.com/'
    #获取用户输入的姓名
    name = entry.get()
    #过滤空格
    name = name.strip()
    if name == '':
        messagebox.showinfo('提示','请输入姓名')
    else:
                           #模拟网页发送数据 jfcs.ttf
     data = {
        'word':name,
        'sizes':'60',
        'fonts':'jfcs.ttf',
        'fontcolor':'#000000'
    }
    result = requests.post(startUrl,data=data)
    #print(result)
    result.encoding ='utf-8'
    #获取网页代码
    html = result.text
    #<div class="tu"><img src="(.*?)"/></div>
    req ='<div class="tu"><img src="(.*?)"/></div>'
    imagePath = re.findall(req,html)
    #print(imagePath)
    # 图片完整的路径
    imgUrl = startUrl   imagePath[0]
    # print(imgUrl)
    # 获取图片内容
    response = requests.get(imgUrl).content
    #保存图片 二进制
    #f = open('{}.gif'.format(name), 'wb')
    #f.write(response)
    #f.close()
    with open('{}.gif'.format(name), 'wb') as f:
        f.write(response)
        #显示图片
    bm = ImageTk.PhotoImage(file ='{}.gif'.format(name))
    label2 = Label(root,image = bm)
    label2.bm = bm
    label2.grid(row = 2 ,columnspan = 2)

代码解读:根据函数名可以看到这是一个具有下载功能的函数,该函数的目的在于向目标网站爬取我们所需要的数据,设想,我们从网站获取数据,首先要有我们的输入,因此,在代码里面,我们就有了模仿网页发送的输入数据,然后将服务器反馈回来的信息进行筛选,得到我们想要的数据,这里就是返回一张图片,并进行保存。

关键函数分析二

03

代码语言:javascript复制
# -*- coding:utf-8 -*-
from tkinter import *
from tkinter import messagebox
from PIL import Image,ImageTk
import requests
import re
#创建窗口
root = Tk()

    #标题
root.title('签名设计')
    #窗口大小 位置
root.geometry('600x300 500 300')
label = Label(root,text = '你的名字',font = ('华文宋体',20),fg = 'red')
    #网格布局
label.grid()
    #输入框
entry = Entry(root,font = ('华文宋体',20))
entry.grid(row = 0,column = 1)
    #点击按钮
button = Button(root,text = '设计签名',font = ('微软雅黑',20),fg = 'green',command=download)

button.grid(row = 1,column = 1)

    #消息循环
root.mainloop()

函数分析:这一部分我们可以称之为可视化窗口创建,原因在于该段代码的运行,会生成一个图像窗口界面,主要用到了tkinter 这个包函数,代码里面采用了网格布局,顾名思义,就像一张网格的布局,然后我们在里面添加我们想要的标题栏,按钮等等,在按钮的后面设置响应函数,如此,每次单击相应的按钮就会执行不同的函数,但是此处有一个问题,就是为什么我们的软件可以不断运行呢,按照之前的实践,python代码除了for,while循环之类,不是按顺序执行然后就关闭了吗?答案在于root.mainloop(),该句代码会将我们的整个布局不断的循环,所以我们才看到软件一直在运行,而不是运行结束后还需要再次运行,因此,本次的签名设计软件只要不关闭就可以反复的运行,大家可以尝试一下哦!

再次欣赏一下效果吧:

今天的签名软件设计结束了,说实话里面涉及东西还是不太简单哦,特别是爬虫部分可能不太好理解,不过没关系,以后慢慢来,现在嘛,先看到功能就可以了

编辑:玥怡居士|审核:小圈圈居士

0 人点赞