Python+Tkinter制作在線個性簽名工具
思路:先選擇在線簽名網站,找到接口模擬請求,然後將生成的簽名圖片顯示在 Tkinter 生成的 GUI 窗口上,最後保存生成的簽名圖片
選擇網址為:http://www.uustv.com/
首先瞭解爬蟲的基本步驟:
發起請求 :即發送一個Request,可能包含額外的headers,data等信息
獲取響應內容 :得到網頁的HTML文件內容
解析內容:可以使用正則表達式提取出想要的內容
保存數據:將數據存為文本,或mp3,mp4等文件或存到數據庫等
一、首先確定GUI界面:
例如如:
代碼:
root =Tk() root.title('簽名工具') root.resizable(0,0) option='1.藝術簽 2.連筆簽 3.商務簽 4.楷書簽 5,瀟灑簽 6.草體簽 7.行書簽 8.個性簽 9.可愛簽' var1=StringVar(value='') var2=StringVar(value='') lable1=Label(root,text=option,font=('黑體',6)) lable2=Label(root,text='輸入你的名字:',font=('黑體',13)) entry1=Entry(root,width=40,font=('黑體',13),textvariable=var1) entry2=Entry(root,width=10,font=('黑體',13),textvariable=var2) button=Button(root,text='確定',command=lambda:check()) lable1.grid(row=0,columnspan=3) lable2.grid(row=0,column=0) entry1.grid(row=1,column=1) entry2.grid(row=1,column=2) button.grid(row=1,column=3) root.mainloop()
二、爬取我們需要的內容
1. 爬取的網頁樣式:目的獲取紅色框的圖片
2. 請求網頁需要的參數:url和表單數據data
url:
表單數據: 如圖下四個參數:
fonts為簽名樣式在網頁的真實值,我們輸入的樣式
word為輸入的名字
代碼:
signature = ['1.ttf','zql.ttf','8.ttf','6.ttf','bzcs.ttf','lfc.ttf','2.ttf','3.ttf','yqk.ttf'] url='http://m.uustv.com/' #請求網頁需要的參數 data ={ 'word':name, 'sizes':60, 'fonts':signature[num-1], #實際代碼中的1表示0 'fontcolor': '#000000' } #1.對需要爬取的網頁發起請求 2. 獲取響應的內容 response=requests.post(url,data)
3.爬取圖片的步驟
#1.對需要爬取的網頁發起請求 2. 獲取響應的內容 response=requests.post(url,data) response.encoding='utf-8' print(response.text) #3.解析內容 imgXpath='<img src="(.*?)"/></div>' #對請求回來的數據進行提取 imgUrls=re.findall(imgXpath,response.text) #正則取下來的是一個列表 content=requests.get(url+imgUrls[0]).content #4.將獲取的二進制內容保存為圖片 with open('{}.gif'.format(name),'wb') as f: f.write(content) #5.顯示圖片 bg_img=ImageTk.PhotoImage(file='{}.gif'.format(name)) #6.將圖片在GUI的底部顯示 lable=Label(root,image=bg_img) lable.bg_img=bg_img lable.grid(row=2,columnspan=4) #在第三行顯示,合並四列 except: messagebox.showinfo('提示',message='生成失敗') pass
4. 爬取的結果:
三、完整代碼
from tkinter import * from tkinter import messagebox from PIL import Image,ImageTk #pip install pillow顯示圖片 import re import requests root =Tk() root.title('簽名工具') root.resizable(0,0) option='1.藝術簽 2.連筆簽 3.商務簽 4.楷書簽 5,瀟灑簽 6.草體簽 7.行書簽 8.個性簽 9.可愛簽' var1=StringVar(value='') var2=StringVar(value='') def check(): #輸入規范處理 name = entry1.get() num = entry2.get() flag = True if num.isdigit(): num= int(num) if name=='': var1.set('不能為空') flag= False if name.isdigit(): var1.set('不能為數字') flag= False if type(num) == type(' ') or num== '': var2.set('1-9') flag=False else: if num>9 or num <1: var2.set('1-9') flag = False if flag : get_img(name,num) #輸入的用戶名稱和簽名 pass def get_img(name,num,root=root): try: #這裡的接口font是選擇簽名的樣式 signature = ['1.ttf','zql.ttf','8.ttf','6.ttf','bzcs.ttf','lfc.ttf','2.ttf','3.ttf','yqk.ttf'] url='http://m.uustv.com/' #請求網頁需要的參數 data ={ 'word':name, 'sizes':60, 'fonts':signature[num-1], #實際代碼中的1表示0 'fontcolor': '#000000' } #1.對需要爬取的網頁發起請求 2. 獲取響應的內容 response=requests.post(url,data) response.encoding='utf-8' print(response.text) #3.解析內容 imgXpath='<img src="(.*?)"/></div>' #對請求回來的數據進行提取 imgUrls=re.findall(imgXpath,response.text) #正則取下來的是一個列表 content=requests.get(url+imgUrls[0]).content #獲取的圖片是二進制文件 #4.將獲取的二進制內容保存為圖片 with open('{}.gif'.format(name),'wb') as f: f.write(content) #5.顯示圖片 bg_img=ImageTk.PhotoImage(file='{}.gif'.format(name)) #6.將圖片在GUI的底部顯示 lable=Label(root,image=bg_img) lable.bg_img=bg_img lable.grid(row=2,columnspan=4) #在第三行顯示,合並四列 except: messagebox.showinfo('提示',message='生成失敗') pass lable1=Label(root,text=option,font=('黑體',6)) lable2=Label(root,text='輸入你的名字:',font=('黑體',13)) entry1=Entry(root,width=40,font=('黑體',13),textvariable=var1) entry2=Entry(root,width=10,font=('黑體',13),textvariable=var2) button=Button(root,text='確定',command=lambda:check()) lable1.grid(row=0,columnspan=3) lable2.grid(row=0,column=0) entry1.grid(row=1,column=1) entry2.grid(row=1,column=2) button.grid(row=1,column=3) root.mainloop()
以上就是Python+Tkinter制作在線個性簽名工具的詳細內容,更多關於Python Tkinter個性簽名的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- python實現b站直播自動發送彈幕功能
- python tkinter Entry控件的焦點移動操作
- Python實現免費音樂下載器
- Python GUI之如何使用tkinter控件
- Python實現直播彈幕自動發送功能