要了解Tkinter,首先要從Tcl編程語言提及。Tcl語言全稱是「Tool Command Language」,是John Ousterman在1980年代建立的一種解釋型編程語言,當時John Ousterman正在加州大學Berkeley分校任職,須要一種相對簡明的開發工程工具的編程語言,因此他就用C語言寫了這個解釋型語言,感受故事是否是有點像Python!css
接下來,他又用C結合Tcl寫了個專門用於GUI編程的庫,叫着Tk。當年這個Tcl/Tk在1980、1990年代但是很是的流行,尤爲是在學術界、工程界和Unx程序員中。html
而Tkinter又是什麼呢?前端
咱們知道Python最先是在1994年發行其1.1版本的,標準庫裏須要各方面的庫,包括文本處理、圖像處理等等,固然也不能少了GUI。Guido van Rossum(Python語言創始人)以爲Tk這個庫現成的,並且還挺好用,就再也不另造輪子了。他用C語言寫了個在Python中能夠調用Tk的接口,再把Tcl/Tk一塊兒打包在標準庫裏,這樣Python就能夠實現GUI的開發功能。而Python中的這個接口,就是Tkinter。程序員
你是否是會說「怎麼能這樣!」, 其實呢,這個也很正常啊,好東西,要你們一塊兒分享嘛!不只Python裏是這麼直接調用Tk庫,Perl、Haskell裏面的GUI庫也是這個Tcl/Tk。編程
瞭解了上面這段Tcl、Tk和Tkinter的歷史,咱們再來談談這些是否值得學習。服務器
其實,任何技術的選擇與否,都是看這種技術的特色是否適合你的需求場景。對於Tkinter來講,它的特色大體是這麼幾個:網絡
Python標準庫裏缺省自帶框架
這個Tkinter能夠說,就至關於Python事實上的標準GUI庫。有啥好處呢?有Python的地方就有Tkinter,不用另外找第三方庫單獨安裝,從而避免一堆兼容、版本等等的問題,這個對於初學者就比較友好。編程語言
Tkinter的API比較穩定工具
十幾年前開發的工具,如今基本還能運行。Tcl/Tk從1990年代中後期,更新就很是慢了(基本就沒變化),Tcl/Tk8.5版本一直用,直到2012年才憋出個8.6版本。更新慢也有好處,寫的程序不會過幾年就很差用了。
Tkinter就是個單純的GUI庫
Tkinter就是個單純的GUI庫,沒有其餘東西,真正要實現什麼功能,都是依賴Python其餘的庫。不像PyQT、wxPython這些大而全的框架,什麼都要本身弄一套。
簡潔
這個特色能夠是優勢:適合入門、小型應用的開發,可是也致使Tkinter的兩大問題,一個是界面相對簡陋,雖然如今Tk8.6有所進步,可是比起其餘框架仍是有很多差距;另外一個是提供的控件都是比較基礎的,稍微複雜一些的,好比HTML顯示組件就要另外想辦法。
這麼看,Tkinter適合什麼場合下學習和使用呢?
若是你是初入門的Python程序員,對Python的基本語法已經有所瞭解,想作點小應用實踐實踐,那麼推薦你能夠學習Tkinter。
由於若是一直開發命令行應用,不少時候不直觀,成就感比較低,不能促進進一步學習的興趣。
而若是這個時候,直接上手開發Web應用,還須要瞭解一堆html、css、js等前端的東西,比較麻煩,並且就算開發出來也就本機跑跑,真要部署到網絡上還有域名、服務器一系列的問題。
而學了Tkinter後,立刻能夠作一點小應用,好比本地文件管理小工具、看圖片的應用、解壓小應用……這些小應用的開發,實際上主要是對Python處理這些問題方法和庫的瞭解,Tkinter只是封裝一個UI。也就是說你實際上是在進一步學習Python。固然,你也能夠不斷優化這些小工具,當成本身的定製化工具,甚至能夠分享給朋友用用,樂趣無窮。
對於有必定基礎的Python程序員,何時適合學下Tkinter呢?
須要寫一些小工具的時候,自己是Python程序員,不免工做中須要一些桌面工具,解決些小問題,學習Tkinter絕對是投入少、產出高的選擇。好比筆者之前同事作測試,一些配置工做很麻煩,且很易出錯,這個時候用tkinter寫個配置小工具,就方便不少。
另外一個是能夠用Tkinter寫一些應用原型。不少時候,一個應用的需求還不是很明確,能夠用Tkinter先快速寫一個,拿出來你們討論,進一步明確需求。等真正需求明確了,再根據需求選擇技術方案。
總結下:
Tkinter的特色,比較適合初學者學習Python、Python程序員開發一些小工具、Python程序員作原型應用。
而若是你的目標是開發商用的桌面應用程序的話,那Tkinter可能不適用,建議仍是使用PyQT或者直接使用其餘語言如C++。
原創做者:VincentPing
內容採用知識共享署名-非商業性使用-相同方式共享 4.0 許可協議
我的公號:Python星球,歡迎來訪!