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