一、设计签名:
1、输入姓名、选择签名样式
2、模拟签名:爬取网上签名图片
3、存在一个小问题:button按钮用grid方法不合理,图片位置放不好。
二、编程环境:
1、python3+pycharm+windows
2、导入模块:tkinter、PIL、requests、re
三、程序代码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#python3 + pycharm
#title = 设计签名
from tkinter import *
from tkinter import messagebox
from PIL import Image,ImageTk
import requests
import re
#模拟浏览器请求
def dowload(n):
startUrl = 'http://www.uustv.com/'
#获取用户输入的姓名
name = entry.get()
fontse =['jfcs.ttf','qmt.ttf','bzcs.ttf','lfc.ttf','haku.ttf','zql.ttf','yqk.ttf'][int(n)-1]
#个性签:jfcs.ttf,连笔签:qmt.ttf,潇洒签:bzcs.ttf,草体签:lfc.ttf,合文签:haku.ttf,商务签:zql.ttf,可爱签:yqk.ttf
name = name.strip() #strip去空格
if name == '':
messagebox.showinfo('提示:','请输入名字')
else:
data = {
'word':name,
'sizes':60,
'fonts':fontse,
'fontcolor':'#000000',
}
result = requests.post(startUrl,data = data)
result.encoding = 'utf-8'
html = result.text #网站中的源代码
reg = '<div class="tu">.*?<img src="(.*?)"/></div>' #正则表达式
imagePath = re.findall(reg,html)[0]
imgUrl = startUrl + imagePath #获取完整的图片路径
response = requests.get(imgUrl).content #获取图片内容
f = open('{}.gif'.format(name),'wb') #存储图片
f.write(response)
bm = ImageTk.PhotoImage(file = '{}.gif'.format(name)) #显示图片
label2 = Label(myWindow,image = bm)
label2.bm = bm
label2.grid(row=3,column = 6 )
myWindow = Tk() #创建窗口
myWindow.title('签名设计') #标题
myWindow.geometry('1000x618') #窗口大小
myWindow.geometry('+83+75') #窗口位置
label1 = Label(myWindow,text = '签名',font = ('华文行楷',20),fg = 'red') #标签控件
label1.grid(row = 0,column = 0)
entry = Entry(myWindow,font = ('微软雅黑',12)) #输入框
entry.grid(row = 1,column = 0)
#点击按钮
button1 = Button(myWindow,text = '个性签',font = ('微软雅黑',18),command = lambda :dowload(n=1)).grid(row = 2,column = 0)
button2 = Button(myWindow,text = '连笔签',font = ('微软雅黑',18),command = lambda :dowload(n=2)).grid(row = 3,column = 0)
button3 = Button(myWindow,text = '潇洒签',font = ('微软雅黑',18),command = lambda :dowload(n=3)).grid(row = 4,column = 0)
button4 = Button(myWindow,text = '草体签',font = ('微软雅黑',18),command = lambda :dowload(n=4)).grid(row = 5,column = 0)
button5 = Button(myWindow,text = '合文签',font = ('微软雅黑',18),command = lambda :dowload(n=5)).grid(row = 6,column = 0)
button6 = Button(myWindow,text = '商务签',font = ('微软雅黑',18),command = lambda :dowload(n=6)).grid(row = 7,column = 0)
button7 = Button(myWindow,text = '可爱签',font = ('微软雅黑',18),command = lambda :dowload(n=7)).grid(row = 8,column = 0)
#消息循环 显示窗口
myWindow.mainloop()