TkinterGUI - 初識Tkinter

來源:互聯網
上載者:User
前言

近期有寫一個簡單GUI程式的點子,具體寫什麼就不說了,但一個要求就是有跨平台的功能。

確切的講,是我希望這個程式寫好後能同時在Windows和Linux下運行,而且要方便隨時修改。

對於程式設計語言,處於練習的目的,我還是選擇了Python,版本就用2.7的了,畢竟3版本個人

覺得有些不習慣。


推薦文檔

不得不承認,在文檔資源方面Tkinter的資源確實不怎麼多,但下面這個的確也夠我用了。

http://www.nmt.edu/tcc/help/pubs/tkinter.pdf

文檔是英文的,英文不行的就別抱怨了,趁早轉行吧,反正以後我會教育自己的孩子一定要學好英文的。。。


為什麼選用Tkinter

Python下有許多的GUI模組可供選擇,其中不乏比較流行和強大的模組,如wxPython。

我選擇Tkinter的原因其實很簡單:

1. Tkinter是Python安裝包裡內建的圖形庫支援包,無需額外安裝,方便

2. Tkinter是輕量級的GUI方案,輕量級的缺點是不能做太複雜的介面,我需要的只是寫擁有幾個按鈕,

    幾個文字框,幾個複選框這樣的簡單GUI程式,這個Tkinter是完全可以勝任的了。輕量級的好處就是簡單。

    對於我來說,快速的寫出我想要的東西是很重要的,我可不希望寫個GUI還需要先學習很長一段時間。。。

3. Python的GUI編輯器IDLE就是使用Tkinter實現的,我覺得我寫的東西應該不會比它複雜

4. 我對於GUI的外觀沒有很苛刻的要求,而且Tkinter有一個叫ttk的模組,支援本地化的主題樣式,做出來的

    GUI程式並不會太醜。


Tkinter是什麼

Tkinter是由Python實現的一個Module,全稱Tk interface,它提供了使用Python方式調用Tcl/TK的庫最終達到顯示圖形化介面的目的。

Tcl/Tk本身是一個GUI圖形庫,類似於GTK以及Qt。

在Python Manual中,將Tkinter的調用層次說明了一下,我的理解如下:

使用者的Python程式 - Tkinter Module - C實現的tkinter擴充 -C/Tcl語言實現的Tk外掛程式 -Xlib

Python本身是跨平台的,Tcl/Tk圖形庫也是跨平台的,所以Tkinter也能跨平台。。。

對於Python程式員來說,並不需要詳細的瞭解Tcl/Tk這個圖形庫,當然如果能瞭解肯定對於Tkinter的編程是有幫組的。

就像Java程式員不需要瞭解C++,但如果瞭解C++對於Java程式員也是很有協助的一樣的道理。

我的目的是“快”,所以就不去仔細瞭解Tck/Tk了,我就參考推薦文檔裡的內容來做嘗試吧。


最簡單的Tkinter例子

在Tkinter 8.5 reference這個文檔中,有一個最簡單的例子:

#!/user/bin/env pythonimport Tkinter as tkclass Application(tk.Frame):    def __init__(self, master=None):        tk.Frame.__init__(self, master)        self.grid()        self.createWidgets()    def createWidgets(self):        self.quitButton = tk.Button(self, text='Quit', command=self.quit)        self.quitButton.grid()app = Application()app.master.title('Sample application')app.mainloop()
文檔中有說明每一條語句的意思,這裡我就做個翻譯的工作,加上點我自己的理解。

第1行:這是告訴Shell程式“使用什麼程式來執行這個指令碼程式”,這在Linux下的指令碼語言基本都支援這樣的語句(Windows下此句無意義),拋開它的實際意義不談,這就是一個注釋。

第2行:匯入Tkinter模組的命名空間(也就是類以及符號等內容),並將其命名空間重新對應為tk(為了編程時少打幾個字。。。)

第4行:這裡自己定義了一個名叫Application的類且指明此類是繼承自tk.Frame類的,也就是說:tk.Frame所支援的方法和成員,Application也都支援。

第5行:__init__函數是class中的一個特殊方法,類似於C++中的建構函式,通常大家就叫它建構函式

第6行:調用父類的建構函式,通常子類的建構函式都需要調用父類的建構函式,這可以說也是繼承的一個典型表現

第7行:這裡調用了一個grid方法,這是為了將程式顯示出來所需要的,文檔中有關於grid的詳細介紹,後續可能會深入瞭解,此處就不進一步深入了。

第10行:為Application建立了一個方法,此方法中建立了一個Button按鈕,並且設定了Button按鈕的屬性,如:顯示的字元為Quit,對應的命令函數為self.quit

第14行:這裡建立了一個Application類的執行個體,此執行個體一建立就會運行__init__這個方法,也就是建構函式

第15行:調用一個方法來設定視窗的標題內容為“Sample application”

第16行:這裡開始進行GUI程式的訊息迴圈,實際上類似於MFC中的主迴圈,此時GUI程式就處於死迴圈中一直等待各種訊息事件(如滑鼠,鍵盤等訊息)


程式執行後顯示的GUI介面如下:


有點醜。沒關係,人都可以整容,程式難道還不能美化,咱先關注的是內在美,先把功能實現了,有時間再做美化的工作,反正這個程式是咱自己用的。。


小結

經過查資料,以及簡單的學習,瞭解可Tkinter是個什麼東西,並對使用其搭建的GUI程式架構有了一個簡單直觀的瞭解。

到目前為止,Tkinter給我的感覺是:新鮮而直接


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.