人生苦短,快學Python!
上一周發了一篇文章《Python Tkinter圖形工具使用方法及實例解析》,很多小伙伴都希望能多出點教程,今天就來了。
Tkinter簡介
由于Tkinter
是Python自帶的標準庫,我們想要使用它的時候,只需直接導入即可。
from tkinter import *
Tkinter
支持的組件有:
對于簡單的圖形界面 Tkinter 還是能應付自如,不過相對于PyQt5做出的界面不夠美觀,相對于Pysimplegui則顯得代碼太笨重。這兩個庫埋個坑,后面開一篇單獨介紹。
今天的整體思路就是:先選擇一個在線簽名網站,找到接口模擬請求,然后將生成的簽名圖片下載到本地,最后顯示在 Tkinter 生成的 GUI 窗口上。
獲取個性簽名圖
在制作個性簽名軟件前,第一件事是先找到一個合適的網站,獲取他們的接口。
為啥說要找合適的網站呢?
某搜索引擎 一搜"簽名設計",那真的是花里胡哨啊,我的審美被一頓沖擊。“亂花叢中”找了一圈,才挑到一個稍微正常一點的網站。
網站地址:http://www.yishuzi.com/b/13.htm
F12開發者模式,選擇 Network。手動將配色調整為#000000
黑色,背景調整為#FFFFFF
白色,隨便輸入一個名字,點擊生成。
非常輕松,就可以找到該網站生成簽名發送的請求。如下所示:
廢話不多說,直接上Python!
通過requests.post()
請求該網址,并導入參數。
其中最重要的參數有兩個: id對應的是帶生成名字,id1對應的是藝術字體。
import requests from urllib.request import urlretrieve url = "http://www.yishuzi.com/b/re13.php" d = requests.post(url, data={"id": "測試簽名", "zhenbi": "20191123", "id1": "904", "id2": "#FFFFFF", "id4": "#000000", "id6": "#000000"}) d.content.decode("utf-8")
可以看到,post()返回的是帶有鏈接的字符串。
輕松就可以從返回的字符串中,提取到生成的增長的個性簽名圖片。然后用urlretrieve()下載圖片到本地,最后將其封裝為自定義函數。
def create_sign(word): url = "http://www.yishuzi.com/b/re13.php" d = requests.post(url, data={"id": word, "zhenbi": "20191123", "id1": "904", "id2": "#FFFFFF", "id4": "#000000", "id6": "#000000"}) myurl = d.content.decode("utf-8").split(""")[1] urlretrieve(myurl, word + ".png")
后續在設計軟件GUI界面時,直接調用這個函數,就可以直接生成個性簽名了。
設計軟件GUI界面
下載簽名圖片函數create_sign()
已經創建好,工作實際就完成了一半。
剩下就是我們設計軟件界面了,不妨先簡單畫個草圖。
這里主要要用到:Label(標簽控件)、Entry(輸入控件)、 Button(按鈕控件)、Frame(框架控件)以及選擇字體時,需要用到的Combobox(下拉列表框)。
前面的控件都介紹過,具體看這一篇8000字,Tkinter詳細使用教程!,這里只重點講一下下拉列表框
。
下拉列表框
Python 窗體(Tkinter)下拉列表框Combobox
。它是在Tkinter模塊下的ttk模塊的一個部件,產生的效果是一個下拉列表框,它是GUI當中的一個裝飾(widget)。當用戶點擊下拉列表獲取值的時候是從列表當中選取的,那么就會產生一個名為<<ComboboxSelected>>
的虛擬事件。
其常見的幾個參數有:
語法 | 作用 |
---|---|
cv = tk.stringVar() | 綁定變量 |
com = ttk.Combobox(root, textvariable=cv) | 創建下拉框 |
com.pack() | 放置下拉框 |
com[“value”] = (‘文本",文本") | 設置下拉數據 |
com.current(索引) | 設置默認值 |
demo = com.get() | 變量接受值 |
com.bind("<>", 函數名) | 下拉數據點擊調用函數 |
簡單用一個小例子幫助大家理解。
import tkinter from tkinter import ttk root = tkinter.Tk() root.geometry("400x200") xVariable = tkinter.StringVar() #創建變量 com = ttk.Combobox(root, textvariable=xVariable) #創建下拉菜單 com.pack() #將下拉菜單綁定到窗體 com["value"] = ("選項1", "選項2", "選項3", "選項4") com.current(0) #設定下拉菜單的默認值 root.mainloop()
運行后,效果如下所示。
這樣我們再通過com.get()
,就可以獲取下拉框中,最后選擇的值了。
設計界面
剩下的界面設計就簡單多了,只需要將Label(標簽控件)、Entry(輸入控件)、 Button(按鈕控件)、Frame(框架控件)、Combobox(下拉列表框)排列一下。
回想一下前面畫的草圖,開整!
規定窗口大小為600x400,再設置窗口的基本屬性。
所有組件都采用place幾何方法,將組件的大小及布局,進行合理的規劃。同時,Button組件也都與其對應的功能函數create_sign(word),進行了鏈接。
部分代碼如下所示,完整代碼見文末。
root = Tk() root.title("簽名設計 by:快學Python") root.geometry("600x400") bg_image = PhotoImage(file = "background.png") bg_label = Label(root, image = bg_image) bg_label.place(relwidth = 1, relheight = 1) frame = Frame(root, bg = "#edcc79", bd = 5) frame.place(relx = 0.5, rely = 0.1, relwidth = 0.75, relheight = 0.1,anchor = "n") font_label = Label(frame, text = "輸入簽名:", font = ("微軟雅黑", 16), fg ="black") font_label.place(relwidth = 0.25, relheight = 1) name_entry = Entry(frame, font = ("微軟雅黑", 16))
最終成品,展示一下。
輸入名字,點擊生成,一氣呵成!不同風格,一鍵轉換!
這樣,我們就又完成了一個Tkinter實戰小案例。
以上就是Python庫學習Tkinter制作GUI個性簽名設計軟件的詳細內容,更多關于Python庫Tkinter制作GUI應用的資料請關注服務器之家其它相關文章!
原文鏈接:https://blog.csdn.net/zhuxiao5/article/details/120443687