你要的 Python 創(chuàng)建 GUI 用戶界面程序,來(lái)咯
時(shí)不時(shí)就有 b 友讓我整點(diǎn)
“Python GUI 相關(guān)的教程”
今天小帥b就來(lái)給你說(shuō)道說(shuō)道

用 Python 來(lái)寫(xiě) GUI 的庫(kù)有好幾個(gè)
比如?pyqt、wxpython、tkinter、kivy
相對(duì)來(lái)說(shuō)比較常用的是 tkinter它是 Python 內(nèi)置的庫(kù)用起來(lái)比較 “直接了當(dāng)”
是這樣的
TK 是一個(gè)開(kāi)源的開(kāi)發(fā)工具包里面提供了很多界面組件的接口比如按鈕、選項(xiàng)框、輸入框這些
而且這些組件是跨平臺(tái)的在不同的操作系統(tǒng)中都可以運(yùn)行比如你常見(jiàn)的 MacOS,Linux,Windows

既然如此
Python 就把這些接口調(diào)起來(lái)封裝成函數(shù)和類然后整成?tkinter 模塊
這樣當(dāng)我們想要寫(xiě) GUI 的時(shí)候直接使用?Python 調(diào)用 tkinter 就好了

在你的終端里面輸入“python -m tkinter”

出現(xiàn)類似的窗口說(shuō)明你的 tkinter 和 tk?都給安裝上了
那么如何玩 tkinter 呢
接下來(lái)就是學(xué)習(xí) Python 的正確姿勢(shì)

組件的使用
我先把一些常用的組件操作給你介紹一下
首先我們導(dǎo)入 tkinter
然后調(diào)用 Tk 方法

運(yùn)行就可以得到一個(gè)窗口

樣式與你的系統(tǒng)類型相關(guān)
其中我們調(diào)用了 mainloop 方法
主要是讓它去循環(huán)等待用戶的交互
定義窗口的標(biāo)題

窗口的高寬是根據(jù)組件的大小相對(duì)而定的
這樣能在不同的系統(tǒng)中比較好的運(yùn)行
當(dāng)然,你也可以
使用 geometry自己指定窗口的寬高

tkinter 把不同的組件
都封裝成了 Class
比如想要往里加入文本
就可以使用 Label 對(duì)象

這里創(chuàng)建了一個(gè) Label 小組件
然后用 pack 塞到窗口中去
每個(gè)組件都有一些屬性可以設(shè)置
比如這里可以設(shè)置常用的寬高字體顏色

加個(gè)騷騷的按鈕


按鈕可以定義點(diǎn)擊事件
比如你想當(dāng)點(diǎn)擊按鈕的時(shí)候調(diào)用方法來(lái)修改 Lable 里面的內(nèi)容
可以使用 command 來(lái)綁定回調(diào)函數(shù)

運(yùn)行一波

添加文本輸入框可以使用 Entry 對(duì)象

可以通過(guò)?entry 的 get 方法
獲取輸入的值
比如我們要讓用戶輸入名稱然后點(diǎn)擊按鈕把文字變成“xxx,你被綠了”就可以這樣

這里主要是將輸入的內(nèi)容
作為 name 參數(shù)傳給?change_label 方法

其它需要點(diǎn)擊的組件使用方式和 Button?差不多
添加單選
RadioButton

添加下拉選擇框
使用 Combbox這個(gè)需要導(dǎo)入 ttk


多選框
CheckButton

彈窗messagebox
讓它點(diǎn)擊按鈕的時(shí)候彈窗可以這樣


除了 showinfo 之外show 警告和錯(cuò)誤

比如顯示警告

還可以用疑問(wèn)的方式展示

比如 askquestion

長(zhǎng)文本Text

獲取 Text 的內(nèi)容

其中 get 可以傳入兩參數(shù)一個(gè)是想要獲取的行數(shù)
一個(gè)是想要獲取該行中的位置
使用 tk.END?可以獲取全部
組件的布局
剛剛的布局有點(diǎn)亂可以在組件 pack 的時(shí)候設(shè)置參數(shù)來(lái)控制組件的位置

這里用 side 指定位置padx 來(lái)指定邊距
一般來(lái)說(shuō)窗口如果有多個(gè)組件
會(huì)先定義 Frame 來(lái)先布局
Frame 也是一個(gè)組件
它可以填充其它組件進(jìn)來(lái)
比如我們可以把剛剛的窗口

分成 5 個(gè) Frame

這里將不同的組件填充到相應(yīng)的 Frame 中每個(gè) Frame 設(shè)置的間隔為?5

另一種比較常用的布局方式是使用?grid()
你可以把窗口看成是一個(gè)多行多列的表格
比如我們想把剛剛窗口的 5?個(gè) Frame
劃分成
| f4 |
| f2 |
| f1 |
| f3 |
| f5 |
那么就可以這樣

通過(guò) grid 去指定 frame 的
具體在第幾行第幾列
其中 sticky 可以控制
組件的對(duì)其方向pad 控制間距
你還可以通過(guò)
rowconfigure 和?columnconfigure來(lái)控制單元格之間的大小

一種更好的方式可以用面向?qū)ο蟮姆绞?/span>來(lái)使用 tkinter 寫(xiě) GUI
像以下這樣在類方法中定義組件和事件

ok,以上
你可以自己去寫(xiě)點(diǎn)界面玩玩
當(dāng)然了我在這里只是介紹一些常用組件的使用
大多組件的使用方式都差不多
更多的組件和使用細(xì)節(jié)可以參考https://docs.python.org/3/library/tk.html
哦對(duì)了
之前在 VIP 簡(jiǎn)單寫(xiě)了下聊天室的實(shí)現(xiàn)用的也是 tkinter

感興趣可以在閱讀原文中了解
那么,我們下回見(jiàn)peace

太愛(ài)我的話就加我微信
備注【讀者】即可通過(guò)
點(diǎn)亮在看你我同在
評(píng)論
圖片
表情
