zl程序教程

您现在的位置是:首页 >  Python

当前栏目

Python-GUI签名

2023-02-18 16:36:23 时间

​1.导入需要的模块库

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请求

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窗口设计

# 创建窗口
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()

4.效果展示