python制作签名软件

原理

利用个性签名网址生成个性签名图片,把生成的个性签名图片爬取出来,放置在GUI界面上,然后再添加一些按钮,输入框之类的
http://www.uustv.com/
在这里插入图片描述

爬取图片

在网页上按F12 打开开发者工具,点击左上角箭头,然后点击我们想要的图片,就会出现图片的连接

但是我们爬取就只能爬取图片的连接,缺少域名,不是完整的网址,用鼠标指着这个图片的链接会出现完整网址,(这里没法截图),但是这个完整网址就是页面的网址加上这个图片的链接,即在这里插入图片描述
在这里插入图片描述
两个连起来,所以我们就把他连起来就行了

所以我们现在开始爬取网页源代码,导入request,因为网页本身的请求方式为post,所以我们也用post爬取,post需要我们输入一些内容才能响应,从network页面可以看到,需要的请求方式和输入的内容
在这里插入图片描述
往下翻看到数据
在这里插入图片描述
因此我们写代码并打印出爬取的内容

import requests
url='http://www.uustv.com/'
data={
      'word': '特朗普',
      'sizes': '60',
      'fonts': '1.ttf',
      'fontcolor': '#000000'
      }
#爬取网页源代码
req=requests.post(url,data=data)
#爬取的网页内容使用网页本身的解码方式,防止出现乱码
req.encoding=req.apparent_encoding
print(req.text)

在这里插入图片描述
利用正则表达式把图片链接爬取出来

#正则表达式
import re
reg=re.compile('<img src="(.*?)">')
res=re.findall(reg, req.text)
print(res)

在这里插入图片描述
得到这个链接之后可以设置url=网址+链接

result=url+res[0]
print(result)

在这里插入图片描述
进入这个网址就是我们需要的网址
在这里插入图片描述
把该url的图片保存到本地

#urlretrieve将url指向的对象保存到本地
from urllib.request import urlretrieve
path=r'./个性签名.gif'
urlretrieve(result,path)

在这里插入图片描述
到此为止,爬取图像的函数就写完了

import requests
import re
from urllib.request import urlretrieve
def get_image():
    url='http://www.uustv.com/'
    data={
          'word': '特朗普',
          'sizes': '60',
          'fonts': '1.ttf',
          'fontcolor': '#000000'
          }
    #爬取网页源代码
    req=requests.post(url,data=data)
    #爬取的网页内容使用网页本身的解码方式,防止出现乱码
    req.encoding=req.apparent_encoding
    #print(req.text)
    
    
    #正则表达式
    reg=re.compile('<img src="(.*?)"/>')
    res=re.findall(reg, req.text)
    #print(res)
    
    result=url+res[0]
    #print(result)
    
    #urlretrieve将url指向的对象保存到本地
    path=r'./个性签名.gif'
    urlretrieve(result,path)
 

制作GUI界面

python3.x使用tkinter

import tkinter as tk
#Tk是小写的k,root出现一次接着消失
root=tk.Tk()
#让root循环出现
root.mainloop()

在这里插入图片描述
修改大小和标题

#修改大小,里面不是乘号,而是x
root.geometry('600x310')
#设置标题
#root.title('签名软件测试')

在这里插入图片描述
设置布局

#把标签1放在root第0行第0列上,内容为“签名”,设置字体,大小,颜色
l1=tk.Label(root,text='签名',font=('华文行楷',20),fg='blue')
l1.grid(row=0,column=0)

在这里插入图片描述
加入输入框
在这里插入图片描述
我们加入输入框之后,我们就应该把原来函数中的data数据word改变为从输入框中获取

data={
          'word': e1.get(),
          'sizes': '60',
          'fonts': '1.ttf',
          'fontcolor': '#000000'
          }

下面继续设计布局,添加按钮

#把按钮放在root的第1行第0列上,设置字体,大小,内容
b1=tk.Button(root,font=('微软雅黑,20'),text='设计签名')
b1.grid(row=1,column=0)

在这里插入图片描述
设置点击按钮事件
点击按钮后应该会出现设计的签名图片,即调用get_image()函数,所以我们应该在原函数(get_image())中加上显示图片的代码

先把下面修改成点击按钮,调用get_image()函数
b1=tk.Button(root,font=('微软雅黑,20'),text='设计签名',command=get_image)
在get_image()函数中加入以下代码
#把文件放到root上
	from PIL import ImageTk
    bm=ImageTk.PhotoImage(file=path)
    l2=tk.Label(root,image=bm)
    l2.bm=bm
    l2.grid(row=2,columnspan=2)#colummnspan=2是占两列的意思

在这里插入图片描述
最后加入很多签名字体
加入一个列表框

#加入列表框
comboxlist=ttk.Combobox(root,font=('微软雅黑',20),width=2)
#直接把可能出现的字体从网页的源代码上复制下来就行
comboxlist['values']=('zql.ttf','8.ttf','6.ttf','bzcs.ttf','lfc.ttf','2.ttf','3.ttf','yqk.ttf')
comboxlist.grid(row=0,column=3)

在这里插入图片描述
加入列表框后,我们需要把get_image()函数中data中的fonts改为从列表框中获取

data={
          'word': e1.get(),
          'sizes': '60',
          'fonts': comboxlist.get(),
          'fontcolor': '#000000'
          }

最终得到在这里插入图片描述
在这里插入图片描述

全部代码

import requests
import re
from urllib.request import urlretrieve
import tkinter as tk
from PIL import ImageTk
from tkinter import ttk
def get_image():
    url='http://www.uustv.com/'
    data={
          'word': e1.get(),
          'sizes': '60',
          'fonts': comboxlist.get(),
          'fontcolor': '#000000'
          }
    #爬取网页源代码
    req=requests.post(url,data=data)
    #爬取的网页内容使用网页本身的解码方式,防止出现乱码
    req.encoding=req.apparent_encoding
    #print(req.text)
    
    
    #正则表达式
    reg=re.compile('<img src="(.*?)"/>')
    res=re.findall(reg, req.text)
    #print(res)
    
    result=url+res[0]
    #print(result)
    
    #urlretrieve将url指向的对象保存到本地
    path=r'./个性签名.gif'
    urlretrieve(result,path)
    #把文件放到root上
    bm=ImageTk.PhotoImage(file=path)
    l2=tk.Label(root,image=bm)
    l2.bm=bm
    l2.grid(row=2,columnspan=2)#colummnspan=2是占两列的意思
    
#Tk是小写的k,root出现一次接着消失
root=tk.Tk()
#修改大小,里面不是乘号,而是x
root.geometry('600x310')
#设置标题
root.title('签名软件测试')
#把标签1放在root第0行第0列上,内容为“签名”,设置字体,大小,颜色
l1=tk.Label(root,text='签名',font=('华文行楷',20),fg='blue')
l1.grid(row=0,column=0)
#把输入框放在root的第0行第1列上,设置字体,大小,宽度,输入框默认内容为空
e1=tk.Entry(root,text='',font=('微软雅黑',20),width=25)
e1.grid(row=0,column=1)
#把按钮放在root的第1行第0列上,设置字体,大小,内容
b1=tk.Button(root,font=('微软雅黑,20'),text='设计签名',command=get_image)
b1.grid(row=1,column=0)
#加入列表框
comboxlist=ttk.Combobox(root,font=('微软雅黑',20),width=2)
#直接把可能出现的字体从网页的源代码上复制下来就行
comboxlist['values']=('zql.ttf','8.ttf','6.ttf','bzcs.ttf','lfc.ttf','2.ttf','3.ttf','yqk.ttf')
comboxlist.grid(row=0,column=3)
#让root循环出现
root.mainloop()

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值