首頁 > 軟體

Python+Tkinter打造簽名設計工具

2022-04-01 13:01:21

1.概述

前面我們已經詳細的介紹了,怎麼使用Tkinter建立屬於自己的視窗介面了。整體佈局呢我們已經搭建起來,唯一沒有實現的一個步驟就是,使用者每輸入一個名字,就會將個性簽名一併顯示在這個視窗介面中,今天我就帶著大家一起完成這個需求。

今天的文章可以看成是爬蟲+Tkinter視窗的結合。昨天我們完成了Tkinter視窗搭建過程,今天需要做的就是利用爬蟲得到我們最終想要的個性化簽名。網上線上簽名網站特別多,我也是任意選取了百度首頁排在第一位的那個線上簽名網站

2.網頁分析

1)網頁缺陷

這個文章有一個不好的地方,就是你輸入一些空格,網站就給你顯示一個空白(如圖所示)。

我們在寫程式碼的時候,可不能這樣,要避免這個問題的發生。我的想法是這樣的,如果你輸入為空,我就彈窗提醒你。

圖片

2)頁面分析

從圖中可以發現,我們在輸入框每輸入一個名字,進行查詢後。相當於給伺服器傳送了一次post請求,post請求的表單共有四個,從圖中可以很清晰地看出來。總的來說,這個網站還是挺簡單的,會一些簡單的爬蟲都可以完成,我這裡就不詳細介紹了。

3)資料的獲取

怎麼檢視網頁原始碼,相信大家不用我說了吧。我們想要獲取的資料,一般的網址是會直接顯示在原始碼中,比如說今天這個網站,但是對於大多數網站就不一定了。通過定位我們發現,最終想要的個性簽名圖片,位於class="tu"div標籤中,我已經用紅色方框標註出來了,由於我們只是獲取這一條資訊,直接使用正規表示式來獲取好了。

3.完整程式碼

通過上述說明,我們已經將準備工作做好了,現在可以書寫程式碼了。這裡有幾個知識點昨天還沒有講述到,就簡單提一下。

entry.get()獲取使用者輸入。我們在輸入框輸入什麼,這裡可以捕捉到;

messagebox.showinfo()能夠完成彈窗提示,和VBA有點像;

from tkinter import *
from tkinter import messagebox
import requests
import re
from PIL import Image,ImageTk

def func():
    # 獲取視窗輸入的名字
    name = entry.get()
    print(name)
    # 去掉空格
    name = name.strip()
    # 判斷:如果使用者輸入為空,顯示
    if name == "":
        messagebox.showinfo("提示",message="請輸入完整的名字")
    else:
        # 請求網站,獲取圖片
        data = {
            'word': name,
            'sizes': '60',
            'fonts': 'yqk.ttf',
            'fontcolor': ''#000000'
        }
        url = "http://www.uustv.com/"
        result = requests.post(url,data)
        result.encoding = "utf-8"
        html = result.text
        pattern = r'<img src="(.*?)"/></div>'
        img_path = re.findall(pattern,html)[0]
        img_url = url + img_path 
        # 寫入到本地
        with open(f'{name}的簽名照.gif', "wb") as f:
            f.write(requests.get(img_url).content)
        # 將圖片展示在視窗上
        bm = ImageTk.PhotoImage(file=f'{name}的簽名照.gif')
        label2 = Label(root,image=bm)
        label2.bm = bm
        label2.grid(row=3,columnspan=2)

# 建立視窗:範例化一個視窗物件。
root = Tk()

# 視窗大小
root.geometry("540x305+374+182")

#  視窗標題
root.title("我的個性簽名設計")

# 新增標籤控制元件
label = Label(root,text="簽名:",font=("宋體",25),fg="red")
# 定位
label.grid()

# 新增輸入框
entry = Entry(root,font=("宋體",25),fg="black")
entry.grid(row=0,column=1)

# 新增點選按鈕
button = Button(root,text="簽名設計",font=("宋體",25),fg="blue",command=func)
button.grid(row=1,column=1)

# 顯示視窗
root.mainloop()

效果如下:

4.總結

為了更好的在不懂行的面前裝逼,我最終也將程式使用pyinstaller打包了。這樣你就可以發給那些文科妹子裝裝逼,不是很好嗎?也會一併提供給大家。

本文有兩個遺留問題,可以交給大家解決一下。其一,原網站可以進行簽名設計的字型切換,我這個在程式碼中沒有體現出來,你可以自行研究一下。其二,使用pyinstaller打包後的程式,雖然可以執行,但是好慢呀,大家自行下去思考。

以上就是Python+Tkinter打造簽名設計工具的詳細內容,更多關於Python Tkinter簽名設計的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com