用WXPython编写CAI课件用户界面

时间:2022-04-22 10:56:59

用WXPython编写CAI课件用户界面

摘 要:对wxPython工具箱的主要组件及其使用方法作简单介绍,并给出了一个用wmPython设计的课件用户界面。

关键词:wyPython 用户界面 CAI Script 自由软件

用wxPvthon结合wxPython工具箱,进行课件设计,不仅使课件具有了交互性,更使课件具有了坚实的科学计算基础。特别需要指出的是:使用wxPython这样的自由软件,可以免费获取大量现成的源代码进行借鉴和利用,这将大大缩短开发周期;而使用者也无需花钱购买运行环境需要的软件(如MS office),课件的运行成本将会极少。

1 wxPython工具箱中的部分主要组件

提及的wxPvthon为2.6.1.0,是包含在python的一个集成包Enthought 0.9.2中的,是ansi版,但并不妨碍在界面上显示中文。其所附的演示程序(demo)位于Python安装日录下的Enthought/demo子目录下,主程序为Main.py,运行时的界面。下面结合演示程序,对wxPython中的部分主要组件作一简单介绍。界面的主体是一个窗体(Frame),窗体上方是菜单栏(MenuBar),下方是状态栏(StatusBar),中间由两个分隔窗口(SplitterWin-dow)将窗体主体分为三个子窗口。左边的子窗口中嵌入一个树组件(TreeCtrl),由一个根节点和两层下拉式子节点构成,上一层用于对演示的例子程序进行组织分类,下一层的每个节点的名称(hemText)均对应一个具体的演示例子程序的文件名。树的结构对应于Main.py中定义的一个名为treeList的列表数据结构。如改变treeList的内容,就可轻易改变演示内容。右边下面的子窗口中嵌入了一个文本框组件(TextCtrl),用于显示程序运行时的有关信息。右边上面的子窗口中嵌入了一个可以组织多页窗口的组件(Note-book),由图1可以看出,Notebook上方有三个页面标签(tab),点击不同的标签将显示不同的页面窗口(page),三个页面窗口分别是:web页面窗口(HtmlWindow)、源程序面板窗口(Panel)和程序运行窗口(其组件可以是继承wxPython的Window类的一个子类,如Panel,PlotWindow等),分别用于显示综述(OverView)、显示例子程序的源代码和运行例子程序,三个页面窗口中的内容均和同一源程序文件有关。

上述讨论不难看出,图1所涉及的一些wxPython中的的组件,如菜单、树、窗口、多页窗口、面板等均是编写课件图形用户界面的重要组件。界面亦是一个非常不错的通用界面。其中的TreeCtrl组件可用于课件大纲内容的目录组织,Notebook组件可用于课件主题内容的分页管理:HtmlWindow页面窗口可用于课件一般内容(采用Html的网页格式)的显示:而涉及科学计算结果的可视化内容:如各种二维曲线图、三维立体图、动画等可通过嵌入到Note-book的页口窗口中显示出来。TreeCtrl组件上的节点由_treeList列表变量控制和组织,每个节点均对应一个文件。这种设计框架使得课件的编写被分解为对一个个具有固定格式的独立程序文件的编写。其结果是:无论内容的更改还是增加、删减都显得更为灵活。更改内容仅需修改相应的程序文件,对其它文件和主程序无任何影响。增加和删减课件内容那就更为方便,只需修改treeList列表变量的内容即可。通过改变treeList列表中条目的次序,更可轻松实现课件内容的重新组织。独立程序文件中的固定格式大致为:

按照上述格式,可以写出课件的一个个页面内容,然后_通过treeList列表进行组合,就可集成为一个适合特定需要的实际课件。修改图1所示的界面,写出适合课件需要的界面并不困难。借助python语言的面向对象特点,通过对Main.py中的类的继承,仅需极少代码,就可写出适合实际课件的用户界面。当然,也可直接修改Main.py文件。下面给出具体例子。

2 一个具体的课件用户界面

显示的是一个涉及物理光学中干涉和衍射现象的课件用户主界面,它是通过对Main.py中的类的继承来实现的。主界面程序的框架如下:

用户界面非常相似。主要区别只是窗口中显示的内容。程序窗口中的显示变成了牛顿环的干涉图案,相应的代码存放在名为牛顿环-PY的文件中,其中的代码应按照上节中总结出的、显示课件页面内容的固定程序文件格式书写,以便主界面程序调用。页面上使用了wxPython的其它一些组件,用于进一步增强课件的交互性:并用Scipy作为计算工具,使其具有坚实的科学基础。程序窗口是一个wxPanel的实例,其中除放置了wxStaficBitmap组件用于显示干涉图案外,还放置了WX-TextCtd,wxSpinButton,wxSlider,wxButton等组件。通过对组件绑定相关事件,用户便可轻松设置牛顿环干涉实验的相关参数,观察不同的干涉图案。

整个课件用Scipy作为计算工具,先根据干涉和衍射的光强分布公式Ⅲ,采用Scipy的矩阵运算函数,得出公强分布的矩阵数据:然后根据用户选择的波长值,算出对应颜色的色图。在获得光强分布和对应色图的基础上,先采用Scipy的绘图子程序包plt中提供的功能,将其转换为BitMap的位图数据,再通过wxPython的位图组件显示出来。课件不仅科学,而且具有很好的交互性,用户可以通过wxPython窗口页面上的组件来调节不同的演示参数,从而观察到不同的光强分布图案。

3 结束语

用wxPython设计的图形用户界面,其视觉效果非常类似于用Microsoft Visual系列语言设计的程序界面。用来设计课件用户界面更是具有许多优点。它不仅方便好用,而且简洁漂亮,更重要的是设计出的用户界面灵活性强、适用性广,可以适应不同内容课件的需要。

上一篇:浅析IPv6协议及发展 下一篇:加密文件系统EFS技术的应用

文档上传者
热门推荐 更多>