python寫簽名程序

主要是基於在線簽名網站做的。

步驟如下:

1.本地提供一個用python生成的界面,提供輸入姓名,簽名樣式選擇控件,簽名按鈕。

2.用戶輸入姓名,選擇樣式,點擊簽名按鈕後,把姓名傳到第三方簽名網站上進行簽名生成。

3.獲取簽名生成的圖片並保存到本地。

4.把本地的簽名圖片顯示在界面上。 


from tkinter import *
from tkinter import messagebox, ttk
from PIL import Image,ImageTk

import requests

class NameSign:
    '''
    簽名程序類
    '''
    def __init__(self):
        # 窗口
        self.root = Tk()
        # 窗口中放置輸入框
        self.entry = Entry(self.root, font=("微軟雅黑", 15))
        # 下拉框
        self.cmb = ttk.Combobox(self.root, font=("微軟雅黑", 15))
        # 下拉框內容
        self.style = {"個性籤":"jfcs.ttf","連筆籤":"qmt.ttf","瀟灑籤":"bzcs.ttf",
                      "草體籤":"lfc.ttf","合文籤":"haku.ttf","商務籤":"zql.ttf","可愛籤":"yqk.ttf"}

    def __window(self):
        '''
        窗口函數。生成窗口,設計窗口
        :return:
        '''
        root = self.root
        # 設置窗口的寬高座標
        root.geometry('600x300+477+199')
        # 設置窗口標題
        root.title("簽名設計")

        # 窗口中放置標籤
        label = Label(root, text="簽名", font=("華文行楷"))
        # 顯示出來
        label.grid()

        # 把輸入框在第0行,第1列顯示出來
        self.entry.grid(row=0, column=1)

        # 窗口中放置標籤
        label2 = Label(root, text=" 樣式", font=("華文行楷"))
        # 顯示出來
        label2.grid(row=0, column=2)

        # 下拉框
        self.cmb.grid(row=0, column=3)
        # 下拉框內容
        self.cmb['value'] = tuple(self.style.keys())
        # 默認選中
        self.cmb.current(0)

        # 窗口中放置按鈕,點擊後纔開始設計簽名
        button = Button(root, text="設計簽名", font=("微軟雅黑", 20), command=self.__sign_and_save)
        # 在第1行,第1列顯示出來
        button.grid(row=1, column=3)

        # 顯示窗口
        root.mainloop()

    def __sign_and_save(self):
        '''
        生成簽名圖片並保存,最後顯示出來
        :return:
        '''
        # 獲取輸入框內容
        name = self.entry.get().strip()
        if name == "":
            messagebox.showinfo('提示',message="請輸入姓名")
            return

        # 獲取下拉框內容
        style = self.style.get(self.cmb.get())

        # 生成簽名
        data = {"word": name,
                "sizes": 60,
                "fonts": style,
                "fontcolor": "#000000"}
        url = "http://www.uustv.com/"
        response = requests.post(url, data=data)
        response.encoding = "utf-8"
        text = response.text

        # 用正則表達式找到簽名圖片
        tu = '<div class="tu"><img src="(.*?)"/></div>'
        # tu = re.search(tu,text)
        # print(tu.group(1))
        tu = re.findall(tu, response.text)
        # print(tu[0])

        # 保存簽名圖片
        url = url + tu[0]
        response = requests.request("get", url)
        file_name = name + ".gif"
        with open(file_name, mode="wb")as f:
            f.write(response.content)

        # 把圖片在界面中顯示出來
        self.__show_img(file_name)


    def __show_img(self,file_name):
        '''
        顯示圖片
        :param file_name:
        :return:
        '''
        bm = ImageTk.PhotoImage(file=file_name)
        label3 = Label(self.root, image=bm)
        label3.bm = bm
        # 佔用3格
        label3.grid(row=2, columnspan=4)

    def run(self):
        '''
        用於外界調用
        :return:
        '''
        self.__window()

if __name__ == '__main__':
    NameSign().run()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章