Python GUI入門(mén)教程:輕松構(gòu)建用戶界面。
微信搜索關(guān)注《Python學(xué)研大本營(yíng)》,加入讀者群,分享更多精彩文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-791922.html
一、簡(jiǎn)介
Python以其簡(jiǎn)單性和多功能性成為最受歡迎的編程語(yǔ)言之一。從網(wǎng)絡(luò)開(kāi)發(fā)到數(shù)據(jù)科學(xué),Python被廣泛應(yīng)用于各個(gè)領(lǐng)域。
本文將探索Python內(nèi)置的用于創(chuàng)建圖形用戶界面(GUI)的庫(kù):Tkinter:。無(wú)論是初學(xué)者還是經(jīng)驗(yàn)豐富的開(kāi)發(fā)者,了解如何創(chuàng)建Python GUI都可以增強(qiáng)構(gòu)建交互式應(yīng)用程序的能力。
Tkinter是隨Python一起使用的標(biāo)準(zhǔn)GUI工具包。它提供了一系列工具和小部件用于創(chuàng)建圖形用戶界面。首先安裝并導(dǎo)入tkinter
庫(kù)。
二、使用Tkinter創(chuàng)建Hello World
首先從一個(gè)基本示例開(kāi)始,以了解Tkinter的基本用法。打開(kāi)Python編輯器,并創(chuàng)建一個(gè)新文件,例如hello_tkinter.py
。編寫(xiě)以下代碼:
import?tkinter?as?tk
def?say_hello():
????label.config(text="Hello,?Tkinter!")
#?創(chuàng)建主窗口
root?=?tk.Tk()
root.title("Tkinter?Hello?World")
#?創(chuàng)建一個(gè)標(biāo)簽小部件
label?=?tk.Label(root,?text="Welcome?to?Tkinter!")
#?將標(biāo)簽放入主窗口
label.pack(pady=10)
#?創(chuàng)建一個(gè)按鈕小部件
button?=?tk.Button(root,?text="Say?Hello",?command=say_hello)
#?將按鈕放入主窗口
button.pack(pady=10)
#?啟動(dòng)Tkinter事件循環(huán)
root.mainloop()
輸出:
保存文件并運(yùn)行。將會(huì)看到一個(gè)帶有標(biāo)簽和按鈕的窗口。點(diǎn)擊按鈕后,標(biāo)簽文本將變?yōu)椤癏ello, Tkinter!”。
三、Tkinter基礎(chǔ)知識(shí)
現(xiàn)在已經(jīng)創(chuàng)建了一個(gè)簡(jiǎn)單的Tkinter應(yīng)用程序,接下來(lái)深入了解一些基本概念和小部件。
3.1 小部件
小部件是Tkinter GUI的構(gòu)建模塊。它們可以是按鈕、標(biāo)簽、輸入字段等等。在前面的示例中已經(jīng)使用了Label和Button小部件。
3.2 輸入小部件
輸入小部件允許用戶輸入一行文本?,F(xiàn)在本文通過(guò)添加一個(gè)輸入小部件來(lái)改進(jìn)前面的“Hello, Tkinter!”示例,以便用戶可以輸入他們的名字:
import?tkinter?as?tk
def?say_hello():
????name?=?entry.get()
????label.config(text=f"Hello,?{name}!")
????
#?創(chuàng)建主窗口
root?=?tk.Tk()
root.title("Tkinter?Hello?World")
#?創(chuàng)建一個(gè)標(biāo)簽小部件
label?=?tk.Label(root,?text="Welcome?to?Tkinter!")
#?將標(biāo)簽放入主窗口
label.pack(pady=10)
#?創(chuàng)建一個(gè)按鈕小部件
button?=?tk.Button(root,?text="Say?Hello",?command=say_hello)
#?將標(biāo)簽放入主窗口
button.pack(pady=10)
#?創(chuàng)建一個(gè)輸入小部件
entry?=?tk.Entry(root)
#?將輸入小部件放入主窗口
entry.pack(pady=10)
#?啟動(dòng)Tkinter事件循環(huán)
root.mainloop()
通過(guò)這種修改,用戶可以在輸入小部件中輸入他們的名字,然后“Say Hello”按鈕將個(gè)性化地向他們問(wèn)好。
3.3 布局管理
Tkinter提供了多種幾何管理器來(lái)組織窗口中的小部件。之前使用的pack()
方法就是其中之一。此外,還可以使用grid()
和place()
來(lái)實(shí)現(xiàn)更復(fù)雜的布局。
3.4 網(wǎng)格布局
使用grid()
方法可以創(chuàng)建類似表格的布局。接下來(lái)繼續(xù)修改本文的示例,以使用網(wǎng)格布局:
#?...
#?使用網(wǎng)格布局將標(biāo)簽和輸入小部件放入主窗口
label.grid(row=0,?column=0,?pady=10)
entry.grid(row=1,?column=0,?pady=10)
#?...
3.5 事件和事件處理
在前面的示例中,本文使用command
參數(shù)來(lái)指定了在點(diǎn)擊按鈕時(shí)要調(diào)用的函數(shù)。Tkinter支持將函數(shù)綁定到各種事件上,例如按鈕點(diǎn)擊、鍵盤(pán)按鍵或鼠標(biāo)移動(dòng)。
接下來(lái)給輸入小部件添加一個(gè)事件處理程序,以便在用戶按下“Enter”鍵時(shí)向他們問(wèn)好:
#?...
def?on_enter(event):
????say_hello()
#?將on_enter函數(shù)綁定到“Enter”鍵按下事件上
entry.bind("",?on_enter)
#?...
現(xiàn)在,在輸入小部件中按下“Enter”鍵將會(huì)觸發(fā)say_hello
函數(shù)。
四、Tkinter中級(jí)概念
現(xiàn)在已經(jīng)介紹了基礎(chǔ)知識(shí),接下來(lái)探索Tkinter中更高級(jí)的概念。
4.1 菜單
Tkinter允許為應(yīng)用程序創(chuàng)建菜單。菜單通常包含文件(File)、編輯(Edit)和幫助(Help)等項(xiàng)目。每個(gè)菜單項(xiàng)都可以有子菜單和命令。
#?...
def?exit_app():
????root.destroy()
#?創(chuàng)建一個(gè)菜單欄
menu_bar?=?tk.Menu(root)
root.config(menu=menu_bar)
#?創(chuàng)建一個(gè)文件(File)菜單
file_menu?=?tk.Menu(menu_bar,?tearoff=0)
menu_bar.add_cascade(label="File",?menu=file_menu)
#?在文件(File)菜單中添加一個(gè)“退出(Exit)”命令
file_menu.add_command(label="Exit",?command=exit_app)
#?...
現(xiàn)在,應(yīng)用程序具有一個(gè)帶有“退出(Exit)”選項(xiàng)的“文件(File)”菜單。點(diǎn)擊“退出”將關(guān)閉應(yīng)用程序。
4.2 框架
框架是用于分組和組織小部件的容器。它們有助于實(shí)現(xiàn)更簡(jiǎn)潔、更有條理的布局。
#?...
#?創(chuàng)建一個(gè)框架
frame?=?tk.Frame(root)
frame.pack(pady=10)
#?在框架內(nèi)創(chuàng)建小部件
label_in_frame?=?tk.Label(frame,?text="Inside?the?Frame")
button_in_frame?=?tk.Button(frame,?text="Click?me!")
#?將小部件放入框架中
label_in_frame.pack()
button_in_frame.pack()
#?...
在這里,本文創(chuàng)建了一個(gè)框架,并將小部件放入其中??蚣軐?duì)于將界面劃分為不同部分特別有用。
4.3 對(duì)話框
對(duì)話框是彈出式窗口,用于提示用戶輸入或提供信息。Tkinter提供了一種使用tkinter.messagebox
模塊創(chuàng)建對(duì)話框的簡(jiǎn)單方法。
#?...
from?tkinter?import?messagebox
def?show_info():
????messagebox.showinfo("Information",?"This?is?an?information?message.")
#?...
#?創(chuàng)建一個(gè)按鈕來(lái)顯示信息對(duì)話框
info_button?=?tk.Button(root,?text="Show?Info",?command=show_info)
info_button.pack(pady=10)
#?...
點(diǎn)擊“顯示信息(Show Info)”按鈕將顯示一個(gè)信息對(duì)話框。
五、Tkinter高級(jí)功能
5.1 使用圖像
Tkinter支持以各種格式顯示圖像??梢允褂?code>PhotoImage類加載和顯示圖像。
#?...
#?加載圖像
image?=?tk.PhotoImage(file="path/to/image.png")
#?創(chuàng)建一個(gè)標(biāo)簽來(lái)顯示圖像
image_label?=?tk.Label(root,?image=image)
image_label.pack(pady=10)
#?...
將"path/to/image.png"
替換為圖像文件的路徑。
5.2 自定義樣式
Tkinter支持使用樣式自定義小部件的外觀??梢詾榘粹o、標(biāo)簽和其他小部件定義自己的樣式。
#?...
#?創(chuàng)建一個(gè)樣式
style?=?tk.Style()
style.configure("TButton",?foreground="green",?font=("Arial",?12))
#?使用自定義樣式創(chuàng)建一個(gè)按鈕
styled_button?=?tk.Button(root,?text="Styled?Button",?style="TButton")
styled_button.pack(pady=10)
#?...
在此示例中,本文為按鈕創(chuàng)建了一個(gè)自定義樣式,其中包括綠色文本和特定字體。
六、學(xué)習(xí)資源
最后,為大家提供一些自學(xué)GUI的資源:
-
Python — GUI Programming (tutorialspoint.com):https://www.tutorialspoint.com/python/python_gui_programming.htm
-
Python GUI — tkinter — GeeksforGeeks:https://www.geeksforgeeks.org/python-gui-tkinter/
-
tkinter — Python interface to Tcl/Tk — Python 3.12.0 documentation:https://docs.python.org/3/library/tkinter.html
七、結(jié)論
本文涵蓋了Python內(nèi)置圖形用戶界面庫(kù)Tkinter的基礎(chǔ)知識(shí)和高級(jí)功能。從創(chuàng)建一個(gè)簡(jiǎn)單的“Hello, Tkinter!”應(yīng)用程序到探索菜單、框架和對(duì)話框等高級(jí)概念。
推薦書(shū)單
《Python語(yǔ)言(第2版)(大數(shù)據(jù)應(yīng)用人才培養(yǎng)系列教材)》
本書(shū)以在 Windows 10 中用 Python 3.6.5 搭建 Python 開(kāi)發(fā)基礎(chǔ)平臺(tái)為起點(diǎn),重點(diǎn)闡述 Python 語(yǔ)言的基礎(chǔ)知識(shí)和 7 個(gè)典型的項(xiàng)目實(shí)戰(zhàn)案例。全書(shū)以理論引導(dǎo)、案例驅(qū)動(dòng)、上機(jī)實(shí)戰(zhàn)為理念打造 Python 語(yǔ)言學(xué)習(xí)的新模式。具體內(nèi)容分為兩大部分:第 1 部分以 Python 語(yǔ)言的基礎(chǔ)知識(shí)普及為主,內(nèi)容包括 Python 3 概述、基本語(yǔ)法、基本數(shù)據(jù)類型、流程控制、字符串與正則表達(dá)式、函數(shù)、模塊、對(duì)象和類、異常、文件操作;第 2 部分以項(xiàng)目實(shí)戰(zhàn)為核心,以學(xué)以致用為導(dǎo)向,以貼近生活的案例為依托,分別介紹爬蟲(chóng)程序、數(shù)據(jù)可視化、數(shù)據(jù)分析、Django 開(kāi)發(fā)、機(jī)器學(xué)習(xí)、自然語(yǔ)言處理和推薦系統(tǒng)項(xiàng)目實(shí)戰(zhàn)。本書(shū)以作者十多年的計(jì)算機(jī)專業(yè)課程教學(xué)經(jīng)驗(yàn)及相應(yīng)的項(xiàng)目實(shí)戰(zhàn)心得為依托,力爭(zhēng)做到以理論知識(shí)為基礎(chǔ)、以案例實(shí)戰(zhàn)為手段、以解決問(wèn)題為根本初衷,讓讀者最大限度地從書(shū)中汲取所需要的編程知識(shí)和實(shí)戰(zhàn)體驗(yàn)。
本書(shū)既可作為高等學(xué)校,尤其是高職院校各專業(yè)的 Python 語(yǔ)言啟蒙教材,也可作為廣大 Python 語(yǔ)言愛(ài)好者自學(xué)的參考書(shū)。
《Python語(yǔ)言(第2版)(大數(shù)據(jù)應(yīng)用人才培養(yǎng)系列教材)》https://item.jd.com/13349313.html
精彩回顧
《Python項(xiàng)目部署利器:輕松上手Git和GitHub》
《用Python替代Adobe,零成本從PDF提取數(shù)據(jù)》
《精通Python函數(shù),深入了解*args和**kwargs》
《Python循環(huán)技巧全攻略,基礎(chǔ)到高級(jí)應(yīng)用一文get!》
《簡(jiǎn)潔編程之道,10個(gè)Python Itertools方法助你事半功倍》
《Python字典的選擇之道:掌握6種類型的終極指南!》
微信搜索關(guān)注《Python學(xué)研大本營(yíng)》,加入讀者群,分享更多精彩
訪問(wèn)【IT今日熱榜】,發(fā)現(xiàn)每日技術(shù)熱點(diǎn)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-791922.html
到了這里,關(guān)于Python GUI初學(xué)者教程,輕松構(gòu)建用戶界面的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!