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