Python GUI编程实践
看完了《python编程实践》对Python的基本语法有了一定的了解,加上认识到python在图形用户界面和数据库支持方面快捷,遂决定动手实践一番。
因为是刚接触Python,对于基本的数据结构tuple,list,set和dictionary认识尚浅,了解到在Python里OO的思想跟在C++和Java里相差无几。又因为手机里面有个andriod应用iustc,它集成了在科大的校车查询、教室查询、科大地图、成绩管理和客户端ustcbbs,虽然小但还算五脏俱全,遂决定从最简单的校车查询入手,用Python写个简单的校车查询功能。
首先从官网弄到校车运行时间表,考虑到学校的四个校区,时间表分为直线和环线,同时考虑是否为节假日,班次安排也有相应变化。
针对实际的校车查询问题简化了数据表数据处理方法,但为了不失一般性还是老老实实考虑了某些限制和业务逻辑,当然对于极端的班车发车数据进行了剔除(浪费时间)。
考虑基本的UI界面为选择出发地,选择目的地,选择是否为节假日,选择是否从当前时间开始查询。注意到iustc里也对查询进行了简化,估计它也对极端的发车时间进行了处理,查询结果应该不是100%正确。并且在出发方式上考虑到北区太小去的人少,iustc直接忽略了相关的选择(只剩东、南、北互相作为出发地目的地共6种可供选择),在结果的显示上它也采用了主要类似时间+直线(或者环线)+具体途径地点(西区->北区->东区)的方式。
最终效果如下:
其中:
extractData.py为从多个时间表.txt文件中按照指定格式提取时间班次地点数据。
scheduleDB.py为将具体提取的数据写入数据库文件schedule.db。
schoolbusschedule.py则为最终的界面显示和查询显示功能实现。
用到Python基本语法,用到基本的数据库创建、插入数据和查询数据,文件基本读写,格式化输出,还有Python的Tkinter编程(具体为Label、OptionMenu、Checkbutton、Listbox控件,以及布局和事件处理,属性设置)。
没用到OO思想,方法封装也基本等于没有。
总结:Python各种包封装的很好,实践简单的逻辑功能相对比较方便。需要继续深入。
改进:其中在结果的呈现时没有考虑加入途径地点,可以改进数据处理方法(直接分四种情况,从东~西、南、北等)。OptionMenu实现下拉框略显丑陋,不过这些不是重点。