契子
州的先生學習 Python 是在 2013 年先後,那時候的不只各類學習資料匱乏,還有 Python2 與 Python3 之間的鬥爭。程序員
從當年的程序員小衆腳本語言,到現在火熱的全民編程首選。Python 的生態逐漸豐富。適用於各個場景的第三方庫也目不暇接地發佈、迭代和完善。web
有本身工做和學習需求的人,可能就能夠直接拿來提升效率了,可是仍是有不少人在掌握了 Python 的基礎知識以後,急需一種可以帶來及時正向反饋的模塊來延續本身的編程之路。編程
一大部分的人選擇經過學習 Python 的圖形界面寬框架來讓本身的 Python 學習之路顯得不那麼枯燥,寫出來的小玩意兒可以看得見、點得着。讓本身寫的程序變成一個普通人認知裏的程序軟件,這帶來的及時反饋和成就感能夠說會不斷激發學習的興趣。瀏覽器
而在 Python 的生態裏,圖形界面開發框架說多很少,說少也很多,像主流的就有:微信
Tkinter多線程
PyQt5框架
PySide2ide
WxPython佈局
Kivy性能
這些框架各有優缺點,好比 Tkinter
是 Python 的內置框架,不須要額外的安裝,對 Python 初學者來講,不用愁心各類模塊的安裝失敗,缺點則是組件只能知足基本需求。
而 PyQt5
、PySide2
、WxPython
這些框架則組件豐富、功能強大;
至於 Kivy
,則是一個全平臺的圖形界面開發框架,上述幾個框架只能用於編寫桌面圖形界面程序,而 Kivy
則能夠打包爲 Windows、Linux、MacOS、Android、IOS 等全平臺的軟件。
顯然將來還會有更多的 Python 圖形界面框架誕生。
面對如此衆多的框架,初學者不免會不知所措。生怕學了一個框架,之後卻用不着。
州的先生在本身學習 Python 圖形界面開發的過程,踩過了不少坑,也吸取了不少的經驗。
在此借鑑 13 年看過的一篇文章《5 天學會一種 web 開發框架》,給出一個 5 天學會一種 Python 圖形界面框架的經驗,但願能給初學者一絲幫助,讓其能從繁雜的 API 和文檔中解放出來,學會通常邏輯和核心結構,事半功倍地掌握和學習新的框架。
清單
基礎篇
基礎篇主要涉及一個框架的運行方式,要了解其程序經過哪一種方式來運行,其內容包括:
如何運行一個基礎的圖形界面程序?
若是實現一個主窗口程序的運行?
基礎組件篇
在瞭解了一個圖形界面應該如何運行以後,咱們就能夠在其窗口內添加各類組件了,基礎組件是一個任何一個圖形界面都包含的模塊,好比:
單行文本輸入框;
按鈕;
文本;
單選框;
多選框;
多行文本輸入框;
表格;
列表;
也有一些複合型的組件,好比:
選項卡;
菜單欄;
須要瞭解:
如何添加一個基本組件到主窗口?
配合「交互篇」瞭解組件的事件反饋;
佈局篇
一個圖形界面要美觀,其佈局相當重要。咱們不可能把全部的組件雜亂無章地堆放在主窗口中。須要瞭解:
框架中有哪幾種佈局方式?
如何使用某種佈局?
如何將組件放置在佈局中?
交互篇
交互是全部程序的靈魂,若是沒有交互,寫得再漂亮的圖形界面也僅僅是一個圖形界面而言。交互所實現的,是圖形界面與工做代碼之間的聯繫。這些交互包括各類組件的點擊、輸入、顯示、隱藏等。
須要瞭解:
基礎的組件都有哪些事件(信號)能夠被捕獲?
捕獲的事件(信號)須要如何進行操做?
性能篇
對於圖形界面程序來講,一個程序啓動以後就佔用了一個進程,若是咱們後臺有任務須要處理,好比某個按鈕點擊了以後,須要下載一個幾百兆的文件,那麼程序的主界面在下載任務執行的過程當中就會被阻塞。爲了更好的性能,咱們須要瞭解:
如何在框架中使用多線程?
如何在框架中使用多進程?
框架中的多線程、多進程如何進行通訊?
高級組件篇(可選)
高級組件表示,這個框架有,那個框架可能沒有。好比:
繪圖
SQL
瀏覽器
高級組件能夠參照基礎組件的點,查看文檔瞭解其特性和使用方式;
樣式篇(可選)
全部的圖形界面框架都會爲組件提供一個基礎的樣式,可是若是有定製化的需求,這些基礎樣式可能就知足不了要求。這時候就須要進行樣式的調整,須要瞭解:
框架是否支持自定義樣式?
框架支持哪些自定義樣式的形式?
如何使用這些自定義樣式方法?
打包篇(可選)
程序寫好以後,咱們還須要將其打包爲特定平臺上的程序包,好比 Windows 上的 exe、安卓上的 apk 等。須要瞭解:
框架支持哪些打包方式;
框架支持打包到哪些平臺?
最後
其實,使用圖形界面框架編寫和開發圖形界面程序,就像是搭積木。咱們先掌握好總體的結構,再根據須要將特定的積木拼接在一塊兒,若是對某塊積木的功能不甚瞭解,那麼能夠翻閱其說明文檔以瞭解使用。
而非頭痛醫頭、腳痛醫腳,盲人摸象般的去使用框架。
按照上述的清單,掌握圖形界面框架開發的總體和結構,剩下的,就交給時間和練習吧。
祝你們都能寫出好看、強大的圖形界面程序。
本文分享自微信公衆號 - 州的先生(zmister2016)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。