相信很多小伙伴已經(jīng)對面向控制臺編程已經(jīng)厭煩了。每次寫python代碼,只能看到一堆控制臺代碼,完全沒有想象中的程序員的感覺。所以接下來小編帶來的,就是有關GUI編程的內(nèi)容——如何使用python寫一個窗口應用程序。本篇文章采用的是tkinter庫,這是一個python自帶的GUI編程庫,雖然它很簡單,也不算好用,但它確很適合入門,接下來就讓小編來介紹一下這個庫吧。
什么是tkinter庫
tkinter庫是一個python自帶的用于圖形化頁面編程的庫。使用tkinter,開發(fā)者可以快速構建一個簡單的圖形化窗口應用。作為一個GUI庫,tkinter的功能還算完備。而且它簡單靈活且穩(wěn)定,是新手學習和小型項目開發(fā)GUI的良好工具。
python安裝時附帶的IDLE就是使用tkinter實現(xiàn)的
圖形化編程有哪些工具,各有什么優(yōu)缺點
python下的圖形化編程工具有pyqt,tkinter和wxpython三種他們的特點如下:
tkinter | pyqt | wxpython |
開源,免費,可以商用 | 部分情況(如果項目不是開源的)需要商業(yè)許可 | 開源,免費 |
易于理解掌握 | 了解pyqt的所有細節(jié)需要大量時間 | 細節(jié)比pyqt少但也很多 |
設計較舊 | 良好的ui和現(xiàn)代外觀 | 也擁有較好的ui和外觀 |
不附帶高級小部件 | 有很多高級小部件 | 也有很多高級小部件 |
沒有設計工具 | 有專門的qt design作為設計工具 | 有wxFormbuilder作為設計工具 |
無需額外安裝 | 需要安裝特定庫 | 需要安裝特定庫 |
庫很小,比較穩(wěn)定 | 庫比較大,比較復雜 | 庫比較大,但沒有pyqt那么大(且復雜) |
學習難度較低 | 有學習過qt的話學習pyqt會很快 | / |
可以看到,各個GUI框架都有各自的優(yōu)缺點,tkinter在簡單方面做到了極致,而pyqt則在細節(jié)方面做得更好。wxpython則作為它們倆的折中方案存在。然而作為初學者要進行GUI編程的快速上手,還是tkinter更加適合。
tkinter快速上手
話不多說,直接上代碼(以下代碼列出了一些簡單的tkinter的組件的使用,代碼附有注釋):
from tkinter import *
from tkinter import messagebox
window = Tk() # 創(chuàng)建一個Windows窗口
window.title("First Window") # 給這個窗口的標題命名
window.geometry("350x200") # 設定窗口大小為350x220
lbl = Label(window, text="Hello") #定義一個標簽組件(標簽1),它的值為hello
lbl.grid(column=0, row=1) #使用grid,將標簽1定位到0,1的位置
txt = Entry(window, width=10) #定義一個文本輸入框,他的寬度為10
txt.grid(column=0, row=0) #使用grid,將輸入框定位到0,0的位置
def clicked():#當點擊按鈕的時候觸發(fā)該方法
res = "Welcome to " + txt.get()#使用get方法可以獲取輸入組件的值
lbl.configure(text=res) #使用configure方法可以設定標簽1的text值(也就是他要展現(xiàn)的值)
messagebox.showinfo("編程學習哪家強", "那必須得是W3Cschool!")
btn = Button(window, text="點我?。?!", command=clicked) #定義一個按鈕組件,他的值為點我?。?!,同時定義點擊觸發(fā)命令為clicked
#當點擊按鈕時,觸發(fā)clicked方法
btn.grid(column=1, row=0)#使用grid,將按鈕定位到1,0的位置
window.mainloop() # 使用mainloop函數(shù),可以讓窗口等待用戶與之交互直到我們關閉它
值得一提的是,tkinter的定位方式不止只有grid(網(wǎng)格布局),也有place(絕對布局)與pack(相對布局),這一點讓小編想起了HTML與CSS,有前端開發(fā)經(jīng)驗的小伙伴理解起tkinter應該會更快。
注:文章篇幅所限,關于tkinter的內(nèi)容不能介紹過多,更多介紹可以前往pythonGUI編程進行學習。
小結
以上就是關于python GUI頁面實例的一個介紹了。更系統(tǒng)的學習可以前往python進階課程進行學習。