摘要:引言學(xué)這么久了,一直想做個(gè)界面出來(lái),最近發(fā)現(xiàn)有個(gè)內(nèi)置庫(kù),利用它可以很輕松做出一些簡(jiǎn)易的界面,首先來(lái)看官方對(duì)的說(shuō)明從上面描述中我們不難看出,不管你是系統(tǒng),還是系統(tǒng),它都可以生成相對(duì)應(yīng)的操作界面,這就是所謂的跨平臺(tái)。
0.引言
學(xué)Python這么久了,一直想做個(gè)界面出來(lái),最近發(fā)現(xiàn)Python有個(gè)內(nèi)置庫(kù)tkinter,利用它可以很輕松做出一些簡(jiǎn)易的UI界面,首先來(lái)看Python官方對(duì)Tkinter的說(shuō)明:
The tkinter package (“Tk interface”) is the standard Python interface to the Tk GUI toolkit. Both Tk and tkinter are available on most Unix platforms, as well as on Windows systems.
從上面描述中我們不難看出,不管你是 Mac OS 系統(tǒng),還是 Windows 系統(tǒng),它都可以生成相對(duì)應(yīng)的操作界面,這就是所謂的跨平臺(tái)。
1.調(diào)用關(guān)系說(shuō)明其原理就是我們使用 Python代碼去調(diào)用 Tkinter, Tkinter 已經(jīng)封裝了訪(fǎng)問(wèn)TK的接口,這個(gè)接口是一個(gè)圖形庫(kù),支持多跨平臺(tái)操作系統(tǒng),進(jìn)而通過(guò)它,我們就可以調(diào)用我們系統(tǒng)本身的GUI接口了。
2.環(huán)境操作系統(tǒng):Windows / Linux / Mac OS
Python版本:3.6.6
3.小試牛刀有了概念并了解原理之后,接下來(lái)就小試牛刀一下~
import tkinter # 定義一個(gè)窗體 top = tkinter.Tk() # 將其加入主循環(huán) top.mainloop()
運(yùn)行一下,biu~,三行代碼就把一個(gè)窗口彈出來(lái)了,有沒(méi)有很神奇~
接下來(lái)我們要來(lái)點(diǎn)復(fù)雜的:
import tkinter as tk import tkinter.messagebox as mbox # 定義MainUI類(lèi)表示應(yīng)用/窗口,繼承Frame類(lèi) class MainUI(tk.Frame): # Application構(gòu)造函數(shù),master為窗口的父控件 def __init__(self, master = None): # 初始化Application的Frame部分 tk.Frame.__init__(self, master) # 顯示窗口,并使用grid布局 self.grid() # 創(chuàng)建控件 self.createWidgets() # 創(chuàng)建控件 def createWidgets(self): # 創(chuàng)建一個(gè)標(biāo)簽,輸出要顯示的內(nèi)容 self.firstLabel = tk.Label(self,text="「人人都是Pythonista」專(zhuān)注Python領(lǐng)域,做最專(zhuān)業(yè)的Python星球。") # 設(shè)定使用grid布局 self.firstLabel.grid() # 創(chuàng)建一個(gè)按鈕,用來(lái)觸發(fā)answer方法 self.clickButton = tk.Button(self,text="點(diǎn)一下瞧瞧?",command=self.answer) # 設(shè)定使用grid布局 self.clickButton.grid() def answer(self): # 我們通過(guò) messagebox 來(lái)顯示一個(gè)提示框 mbox.showinfo("「人人都是Pythonista」",""" 這是一個(gè)專(zhuān)注Python的星球,我們提供「從零單排」、「實(shí)戰(zhàn)項(xiàng)目」、「大航?!?、「技術(shù)沙龍」、「技術(shù)分享」、「大廠(chǎng)內(nèi)推」等系列供你選擇及學(xué)習(xí),當(dāng)然也會(huì)有周邊技術(shù)沿伸。 本星球會(huì)不定期開(kāi)展各類(lèi)實(shí)戰(zhàn)項(xiàng)目,階段性組織線(xiàn)上技術(shù)沙龍、分享等;對(duì)于職業(yè)發(fā)展路線(xiàn)不明確的,我們會(huì)邀請(qǐng)到一些大廠(chǎng)hr及高級(jí)開(kāi)發(fā)、經(jīng)理等給大家解惑。 加入我們,和千人一起玩Python,To be a Pythonista! """) # 創(chuàng)建一個(gè)MainUI對(duì)象 app = MainUI() # 設(shè)置窗口標(biāo)題 app.master.title("「人人都是Pythonista」") # 設(shè)置窗體大小 app.master.geometry("400x100") # 主循環(huán)開(kāi)始 app.mainloop()
在這里:
我們導(dǎo)入了 tkinter 的相關(guān)模塊
定義了初始化函數(shù),通過(guò) grid() 方法將我們的組件傳給父容器
自定義一個(gè)創(chuàng)建組件的方法,我們創(chuàng)建了一個(gè)標(biāo)簽和一個(gè)按鈕,這個(gè)按鈕被點(diǎn)擊后就會(huì)觸發(fā) answer這個(gè)方法
我們通過(guò) messagebox 來(lái)顯示一個(gè)提示框
實(shí)例化我們的 APP,然后通過(guò)主線(xiàn)程來(lái)監(jiān)聽(tīng)我們的界面操作
運(yùn)行后如下:
5.總結(jié)想要做出漂亮的UI界面,還是需要深入地學(xué)習(xí)下Tkinter這個(gè)模塊。上文中的我們只用到了框架、按鈕、標(biāo)簽、文本這四種控件,而在Tkinter中給我們提供了15種控件供大家使用。
此外Tkinter控件布局有三種方式:包裝pack()、網(wǎng)格grid()、位置place(),本文中選用了grid,大家也可以逐一嘗試下有什么區(qū)別,期待大家的大試牛刀~
關(guān)注公眾號(hào)「Python專(zhuān)欄」,后臺(tái)回復(fù)關(guān)鍵字:zsxq03,獲取本文全部代碼
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/43378.html
摘要:在這個(gè)窗口之上,可以添加各種輸入框按鈕文本等,可以增加對(duì)各種動(dòng)作的處理。事件要與特定的控件相綁定,比如按鈕有點(diǎn)擊事件,輸入框有按鍵事件,窗體有關(guān)閉事件等。 在大多數(shù)時(shí)候,我們都在黑黢黢的控制臺(tái)里執(zhí)行 Python 腳本。這看起來(lái)很酷很 GEEK。但對(duì)于部分場(chǎng)景下的用戶(hù)來(lái)說(shuō),這樣就不大美觀(guān)和人性化了:我們需要交互更方便的圖形化產(chǎn)品,也就是 GUI (圖形用戶(hù)界面,Graphical Us...
摘要:上篇文章我許了一個(gè)愿,就是想讓大家多多關(guān)注我,然后我的粉絲就蹭蹭的漲了好幾百,謝謝大家的厚愛(ài)??墒俏野l(fā)現(xiàn)粉絲是漲了,三連變少了,謝謝大家這次給我三連,我一定再接再厲。地址的尋找陽(yáng)光總值,種植一個(gè)豌豆需要,非常不夠用。 目錄 前言 游戲的安裝 思路 ? ? ? 一句話(huà)總結(jié) ? ? ? 大概的思...
摘要:我自己印象最深的是在上安裝加密和科學(xué)計(jì)算模塊,折騰了很久。這個(gè)精裝是面向數(shù)據(jù)科學(xué)的,同時(shí)也保留了你自己進(jìn)一步改裝的空間。數(shù)據(jù)科學(xué)庫(kù)包環(huán)境管理工具,這幾樣就是的主要功能。 幾乎所有的 Python 學(xué)習(xí)者都遇到過(guò) 安裝 方面的問(wèn)題。這些安裝問(wèn)題包括 Python 自身環(huán)境的安裝、第三方模塊的安裝、不同版本的切換,以及不同平臺(tái)、版本間的兼容問(wèn)題 等。當(dāng)你因?yàn)檫@些問(wèn)題而卡殼,一行代碼沒(méi)寫(xiě)就已...
閱讀 2444·2021-09-22 15:41
閱讀 1456·2021-08-19 10:54
閱讀 1767·2019-08-23 15:11
閱讀 3406·2019-08-23 10:23
閱讀 1434·2019-08-22 16:28
閱讀 804·2019-08-22 15:11
閱讀 746·2019-08-22 14:53
閱讀 720·2019-08-22 13:49