首先我們來討論一個爭議性問題,用Python做窗口(GUI)編程到底有沒有意義?總體來說,意義不大。為什么呢?很明顯,Python的強項在于代碼優美、簡潔,把更多的工作留給計算機去運行,從而解放程序猿們。所以用Python的大牛,更多的是用Python做商業爬蟲、大數據分析、Web后端、網絡運維、以及與各種開源硬件結合開發各種智能應用。知乎上有位大神給出了非常好的回答:“如果你有時間花半個小時去開發一個簡單的、非原生的窗口界面,真不如用Python寫好后臺,前臺直接用html幾句代碼搞定,還不用考慮兼容問題”。對此,Ican’tagreemore。
但是,仔細想來,對于眾多的編程愛好者來說,甚至我們這些科班出身的學生,當年在以C作為啟蒙語言的過程中,真的在學了大半年后還有過這樣的疑問:“到底這玩意兒有什么用?”。雖然深入學習到一定層次,我們知道了C的效率、C的底層、C的思想,C的“高級”,使我至今仍然膜拜信息學奧賽的各位指導大牛。但是更多天資平平,一腔熱血的程序愛好者可能就在漫漫的黑屏白字中放棄了。高中要體現計算思維,要提高程序設計的思維啟蒙作用,我個人覺得還是要有圖形界面開發作為輔助的,還記得山師附中分享的那些訂餐、搶紅包的案例嗎?我相信學生一定是充滿了興趣去學習的。
那么問題就來了,python這么優秀的語言,是不是做出來的窗口也很優雅呢。結果可能出乎你的意料,python自帶的圖形庫tkinter做界面顏值很一般,關鍵整個界面都和java一樣,需要用代碼一點一點壘起來。比如:要做個含有一個按鈕,一個文本框的小程序,光寫界面就要寫如下圖多的代碼,而且大小不合適,就要進入改代碼、運行、改代碼、再運行的循環反復中。此時此刻,腦海中只有一句歌詞:“這讓我感到絕望,董小姐~”……
所以很多時候,要用Python做成產品級的UI的話,還是要求助第三方GUI開發工具,比如wxPython、pyQT等等。但這些工具,龐大臃腫、學習周期長,對于我們中學教育而言專業性太強。所以有人也想到了這些,給tkinter這個python自帶的圖形庫,開發了對應的圖形設計軟件(插件)。經過網絡檢索比對,我能找到比較靠譜的,是這樣一款VB擴展程序:
這款VB插件利用VB本身設計界面,生成的代碼,可以直接在python2和3中運行:
仔細來看,還是有些瑕疵的,它生成的界面控件,不管設置為絕對大小,還是相對大小,都出現了一定的偏移,估計是和最新的python3.6版本不匹配。拋開這些我還真是覺得這款插件非常適合中學課堂程序教學從VB到Python的過渡,老師們可以研究一下。軟件是一個網友個人做的,放到GitHub上了,百度“VBtkinter”即可下載,遺憾的是只更新到15年吧。
哈哈,既然前面的Python圖形開發插件不是那么好用,這么優秀的VB擴展程序原作者也不再更新維護了,我忽然有一種自己寫一個Python圖形開發工具的沖動。幾天下來,還算是做了個雛形出來,基本功能已經實現。如圖:
視頻演示:
目前這個工具還在開發完善中,還有很多的控件和屬性要添加,總體目標和VB擴展程序版的軟件差不多,當然我會修復下顯示方面的bug,多一個效果預覽功能,重點抓住我們中學實用的各種屬性,各位敬請期待哈。
最后,還是要說一下,界面只是外表,深厚的編程功底、嚴謹的編程思想,才是我們應該追求的主旋律。讓信息技術教師更加專業化,讓信息技術課體現深度思維,前路漫漫,愿與各位同仁共勉。