首先我们来讨论一个争议性问题,用Python做窗口(GUI)编程到底有没有意义?总体来说,意义不大。为什么呢?很明显,Python的强项在于代码优美、简洁,把更多的工作留给计算机去运行,从而解放程序猿们。所以用Python的大牛,更多的是用Python做商业爬虫、大数据分析、Web后端、网络运维、以及与各种开源硬件结合开发各种智能应用。知乎上有位大神给出了非常好的回答:“如果你有时间花半个小时去开发一个简单的、非原生的窗口界面,真不如用Python写好后台,前台直接用html几句代码搞定,还不用考虑兼容问题”。对此,I can’t agree more。
但是,仔细想来,对于众多的编程爱好者来说,甚至我们这些科班出身的学生,当年在以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上了,百度“VB tkinter”即可下载,遗憾的是只更新到15年吧。
哈哈,既然前面的Python图形开发插件不是那么好用,这么优秀的VB扩展程序原作者也不再更新维护了,我忽然有一种自己写一个Python图形开发工具的冲动。几天下来,还算是做了个雏形出来,基本功能已经实现。如图:
视频演示:
目前这个工具还在开发完善中,还有很多的控件和属性要添加,总体目标和VB扩展程序版的软件差不多,当然我会修复下显示方面的bug,多一个效果预览功能,重点抓住我们中学实用的各种属性,各位敬请期待哈。
最后,还是要说一下,界面只是外表,深厚的编程功底、严谨的编程思想,才是我们应该追求的主旋律。让信息技术教师更加专业化,让信息技术课体现深度思维,前路漫漫,愿与各位同仁共勉。
(采编:潘思阔 技术:刘溪)