Python自帶的GUI庫Tkinter是否值得學習?

Python語言能夠用在不少方面,網站開發、數據分析、運營維護、遊戲開發等等,那麼桌面應用程序GUI呢?其實Python標準庫裏自帶Tkinter就是幹這個的。相比PyQT、wxPython等等,Tkinter有哪些優點和不足,是否值得學呢?

Tkinter是什麼?

要了解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。編程

Tkinter值得學嗎?

瞭解了上面這段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星球,歡迎來訪!

相關文章
相關標籤/搜索