App下載

圖形化界面編程——python tkinter庫的使用

猿友 2021-06-28 12:04:01 瀏覽數(shù) (8594)
反饋

相信很多小伙伴已經(jīng)對(duì)面向控制臺(tái)編程已經(jīng)厭煩了。每次寫python代碼,只能看到一堆控制臺(tái)代碼,完全沒有想象中的程序員的感覺。所以接下來小編帶來的,就是有關(guān)GUI編程的內(nèi)容——如何使用python寫一個(gè)窗口應(yīng)用程序。本篇文章采用的是tkinter庫,這是一個(gè)python自帶的GUI編程庫,雖然它很簡(jiǎn)單,也不算好用,但它確很適合入門,接下來就讓小編來介紹一下這個(gè)庫吧。

什么是tkinter庫

tkinter庫是一個(gè)python自帶的用于圖形化頁面編程的庫。使用tkinter,開發(fā)者可以快速構(gòu)建一個(gè)簡(jiǎn)單的圖形化窗口應(yīng)用。作為一個(gè)GUI庫,tkinter的功能還算完備。而且它簡(jiǎn)單靈活且穩(wěn)定,是新手學(xué)習(xí)和小型項(xiàng)目開發(fā)GUI的良好工具。

 python安裝時(shí)附帶的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é)需要大量時(shí)間  細(xì)節(jié)比pyqt少但也很多
 設(shè)計(jì)較舊  良好的ui和現(xiàn)代外觀 也擁有較好的ui和外觀
 不附帶高級(jí)小部件  有很多高級(jí)小部件 也有很多高級(jí)小部件 
 沒有設(shè)計(jì)工具  有專門的qt design作為設(shè)計(jì)工具  有wxFormbuilder作為設(shè)計(jì)工具
 無需額外安裝  需要安裝特定庫 需要安裝特定庫 
 庫很小,比較穩(wěn)定  庫比較大,比較復(fù)雜 庫比較大,但沒有pyqt那么大(且復(fù)雜) 
 學(xué)習(xí)難度較低  有學(xué)習(xí)過qt的話學(xué)習(xí)pyqt會(huì)很快

可以看到,各個(gè)GUI框架都有各自的優(yōu)缺點(diǎn),tkinter在簡(jiǎn)單方面做到了極致,而pyqt則在細(xì)節(jié)方面做得更好。wxpython則作為它們倆的折中方案存在。然而作為初學(xué)者要進(jìn)行GUI編程的快速上手,還是tkinter更加適合。

tkinter快速上手

話不多說,直接上代碼(以下代碼列出了一些簡(jiǎn)單的tkinter的組件的使用,代碼附有注釋):

from tkinter import *
from tkinter import messagebox

window = Tk() # 創(chuàng)建一個(gè)Windows窗口
window.title("First Window")  # 給這個(gè)窗口的標(biāo)題命名
window.geometry("350x200")  # 設(shè)定窗口大小為350x220

lbl = Label(window, text="Hello") #定義一個(gè)標(biāo)簽組件(標(biāo)簽1),它的值為hello
lbl.grid(column=0, row=1) #使用grid,將標(biāo)簽1定位到0,1的位置

txt = Entry(window, width=10) #定義一個(gè)文本輸入框,他的寬度為10
txt.grid(column=0, row=0) #使用grid,將輸入框定位到0,0的位置
def clicked():#當(dāng)點(diǎn)擊按鈕的時(shí)候觸發(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) #定義一個(gè)按鈕組件,他的值為點(diǎn)我?。?!,同時(shí)定義點(diǎn)擊觸發(fā)命令為clicked
#當(dāng)點(diǎn)擊按鈕時(shí),觸發(fā)clicked方法
btn.grid(column=1, row=0)#使用grid,將按鈕定位到1,0的位置

window.mainloop() # 使用mainloop函數(shù),可以讓窗口等待用戶與之交互直到我們關(guān)閉它

值得一提的是,tkinter的定位方式不止只有g(shù)rid(網(wǎng)格布局),也有place(絕對(duì)布局)與pack(相對(duì)布局),這一點(diǎn)讓小編想起了HTML與CSS,有前端開發(fā)經(jīng)驗(yàn)的小伙伴理解起tkinter應(yīng)該會(huì)更快。

 注:文章篇幅所限,關(guān)于tkinter的內(nèi)容不能介紹過多,更多介紹可以前往pythonGUI編程進(jìn)行學(xué)習(xí)。

小結(jié)

以上就是關(guān)于python GUI頁面實(shí)例的一個(gè)介紹了。更系統(tǒng)的學(xué)習(xí)可以前往python進(jìn)階課程進(jìn)行學(xué)習(xí)。


0 人點(diǎn)贊