1.导入需要的模块库
代码语言:javascript复制from tkinter import *
from tkinter import messagebox
from PIL import Image, ImageTk
import re
import requests
Tkinter:Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口
PIL:是Python Image Library的缩写,图像处理的模块。主要的类包括Image,ImageFont,ImageDraw,ImageFilter
re :re模块主要功能是通过正则表达式是用来匹配处理字符串的
2.获取页面源代码及其信息 发送POST请求
代码语言:javascript复制def download():
startUrl = 'http://www.uustv.com/'
# 获取用户输入的姓名 entry 是输入标签
name = entry.get()
# 去空格
name = name.strip()
# 如果没有输入名字 则提示
if name == '':
# 提示信息
messagebox.showinfo('提示', '请输入名字!')
else:
# 模拟网页发送数据
# 字典
data = {
'word': name,
'sizes': '60',
'fonts': 'bzcs.ttf',
'fontcolor': '#000000'
}
result = requests.post(startUrl, data=data)
# 设置编码 防止中文乱码
result.encoding = 'utf-8'
# 获取网页源代码
html = result.text
# 正则表达式
req = '<div class="tu"><img src="(.*?)"/></div>'
# 图片路径 时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数 tmp/152283183699750.gif
imgPath = re.findall(req,html)
# 图片完整路径
imgUrl = startUrl imgPath[0]
# 获取图片内容
response = requests.get(imgUrl).content
# 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
f = open('{}.gif'.format(name), 'wb')
f.write(response)
# 显示图片
bm = ImageTk.PhotoImage(file='{}.gif'.format(name))
label2 = Label(root, image=bm)
label2.bm = bm
# columnspan 组件所跨越的列数
label2.grid(row=2, columnspan=2)
3.GUI窗口设计
代码语言:javascript复制# 创建窗口
root = Tk()
# 标题
root.title('签名设计')
# 获取屏幕 宽、高
ws = root.winfo_screenwidth()
hs = root.winfo_screenheight()
w = 600
h = 300
# 计算 x, y 位置
x = str(int((ws/2) - (w/2)))
y = str(int((hs/2) - (h/2)))
# 窗口大小 截图说明窗口大小
root.geometry('550x300')
# 窗口位置 宽 高
root.geometry(' 500 300')
# 标签控件 可以设置字体 大小 颜色
label = Label(root, text='签名', font=('华文行楷', 20),fg = 'red')
# row=0, column=0 grid 网格布局 pack place 但是不要混合使用
# 定位
label.grid()
# 输入框 entry 显示单行文本 Text
entry = Entry(root, font=('微软雅黑', 25))
# row 行 column 列 pack place
entry.grid(row=0, column=1)
# 点击按钮
button = Button(root, text='设计签名', font=('微软雅黑', 20), command=download)
# 你可以使用sticky选项去指定对齐方式 E、W
button.grid(row=1, column=1)
# 消息循环
root.mainloop()