我用Boa constructor很长时间了,也用它做了一个小项目(双色蟒 http://code.google.com/p/ssqpython),有一些感觉了;而且之前翻译了Boa constructor的中文部分,如果你从网上下载的是0.6.1版本,i18n中都会有中文可选。所以对它做一个介绍(基于Windows)。
首先要说的是Boa constructor不是Boa,当然也不是韩国女歌手宝儿。官方的网站是:http://sourceforge.net/projects /boa-constructor/。而Boa也是Sourceforge上面的项目,是一个HTTP服务器项目。Boa constructor只是一个“wxPython GUI Builder”,即wxPython图形界面构建器。 我不想介绍Boa constructor有多么容易上手,也不想说它曾获过Sourceforge的月度最佳,我只是谈谈自己的感受。
当前我所看到的版本是0.6.1-beta,发布出来的时间是2007年7月5日。有三个版本:boa-constructor- 0.6.1.bin.setup.exe、boa-constructor-0.6.1.src.win32.exe、以及boa- constructor-0.6.1.src.zip。我使用的是boa-constructor-0.6.1.src.zip。我推荐使用这个版本,因为我估计你已经安装好了Python和wxPython,所以用这个版本更能体现你的专业性:)。
解压缩到C:Python25\Lib\site-packages\Boa目录下面,然后做一个Boa.py的链接到桌面。 双击链接启动……什么,无法启动?这个问题很严重,很多人都没有办法解决。
1、请先打开cmd窗口(就是命令行窗口),输入python,看到Python的交互界面了吗? 就像这样: C:\Documents and Settings\Administrator>python Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>>
如果看到请按下Ctrl+Z退出,并直接到第2步。如果看不到,那么你没有安装Python,或者没有将Python所在目录加入系统环境变量中。下载Python请到http://www.python.org/download/,请选择Python 2.5.1 Windows installer。 (当然如果是其他系统,请选择其他对应项)环境变量的添加方法是:我的电脑-->右键-->属性-->高级-->环境变量-->系统变量 -->PATH-->添加“X:\Python25”进去,点击“确定”。好了,现在可以再重新打开一个命令行窗口,输入python看看,是不是可以看到Python提示符了?
2、接下来我们在Python提示符下输入:import wx,如果没有任何反应(你按没按回车呀?没按?快按!)如果出现错误:ImportError: No module named wx,这说明你没有安装wxPython。请到官方网站www.wxpython.org上下载。注意:一定要和Python对版本保持一致。比如我的 Python版本是2.5.1,我下的wxPython文件就是wxPython2.8-win32-unicode-2.8.6.0- py25.exe。
wxPython有两种类型:一种是ASCII,一种是Unicode。推荐下载Unicode,据说这种版本对中文支持的比较好。安装好wxPython之后,在Python提示符下输入:import wx。提示符直接跳到下一行,这就意味着wxPython已经导入成功了。再继续输入:wx.VERSION,看到了什么?我看到的是(2,8,6,0, '')。如果你看到的小于2.8.0.0,那么还需要更新为更新的版本,因为最新版的Boa constructor需要2.8.0.0以上版本的wxPython。
请不要安装最新版、次新版、次次新版等等的wxPython,因为boa constructor升级比较慢,所以不能很好的支持最新的wxPython。(也怪wxPython升级太频繁,呵呵)而且我建议同时下载安装对应的win32-docs-demos,这个是wxPython官方提供的一些例子,基本涵盖wxPython的所有功能,对于学习wxPython绝对有好处。 在我们安装好Python和wxPython之后,就可以直接运行Boa constructor了。
双击Boa.py吧!! 当你第一眼看到Boa constructor时,你会发现它和Delphi很像(没见过Delphi也没有关系),有人还说跟VB很像。如果你用的是中文版操作系统,你看到的应该是中文界面。 如果你用的是其他语言的操作系统,可以选择Editor中的Tools下面的Choose IDE Language,选择Chinese,点击OK,重新启动Boa constructor,这时候就应该是中文版了。
但是我推荐用英文版,原因:中文版现在还有些翻译错误(是我的错),而且掌握好英文也没什么害处。
它分三个部分:Palette、Inspector和Editor。Palette(调色板)位于最上方;Inspector(检测器)位于左侧;Editor(编辑器)位于右侧。Designers(设计器)、Explorer(浏览器)、Debugger(调试器)则通过Editer来调用或呼出。
让我们直接开始吧:
1、先创建一个wx.App,这样会自动创建wx.Frame,Boa constructor就是这样设置的,我也推荐这样,先有一个app(没有Frame),然后调用其他Frame。创建方法有两种:在最上方的 Palette中的New面板下面选择wx.app;或者在Editor中选择File菜单下面的New的wx.app。
我们可以在Editor中看到在Shell和Explorer旁边出来一个*(App1)*和*(Frame1)*。出现*表示还没有保存。这两项下面都有子面板Source,嗯,就是代码。好了,我们先保存一下。通过File-Save保存也可以,点击那个软盘图标保存也可以。
2、然后我们可以在Frame中添加Panel(面板)或者Button(按钮)或者TextCtrl(文本控制)。Frame是框架的意思,有框架之后就可以添加任何东西进去。最先添加进去的是一个“底板”,通常会是Panel或者Windows之类的。这种“底板”添加进去之后就会自动填充满 Frame。
点击Frame,然后点击Editor中的Frame Desinger图标(快捷键是F12),看见深灰色的小格子,上面还有一个标题栏对不对?这个就是Frame!现在我们就可以往其中拖拽东西了。所有可以拖拽进去的东西都在上方的Palette中,有很多的哦,比如Containers/Layout(容器/布局)、Basic Controls(基本控件)、Buttons(按钮)、List Controls(列表控件)等等等等。
我们在Containers/Layout中选择第一个图标wx.Panel,左键点一下,嗯,变成按下状态了。然后再Frame中点一下,Yeah~添加进去了。为什么没充满整个Frame呢?别急,先点右上角的×关掉这个Frame,再点开这个Frame(F12忘了吗?),是不是填充满了呢?都是浅灰色的了。
(关掉重新再开——这个技巧很重要,因为只有这样Boa Constructor才能识别出来。以后我们设置属性、调整大小等等操作也最好这样“关掉重新再开”一下)
我们把鼠标放到Frame上,能看到panel1,放到标题栏上能看到Frame1(或者你保存Frame的名字)。这个名字也可以改,左键点击,然后看看Inspector面板中的Constr属性页,Name一项就是名字。左键点击就可以修改,千万千万别改成中文、法文、日文、韩文,只能是英文!改好之后点击上面的刷新图标(Recreate selection)。也可以改位置,在Position下面修改;也也可以改大小,在Size下面修改;也也也可以改风格,在Style下面修改。
(其实这还是需要wxPython方面的知识的,看看wxPython in action这本书吧,可以还是英文的)
Inspector下面的Props属性页下面可以该更多的东西,比如背景颜色(BackgroundColour)、提示文字(ToolTipString)、字体(Font)等等。很有用的Sizer(大小管理器)也是在这个下面设置。
你发没发现很多关于文字设置前面都有一个u,这是unicode的缘故。也是我们安装wxPython-unicode版本的缘故,你可以在某些提示文字之类的地方输入中文,系统会自动转换成unicdoe码。
(关于unicode真是很复杂!!我曾经在windows下开发,没什么问题,但是放到Linux下,傻眼!所以如果你要做跨平台软件,好好了解一下unicode)
Inspector下面的Evts属性页就是“事件”。所有的可能的相关事件都在这下面。鼠标事件(MouseEvent)、KeyEvent(键盘事件)等等。通过这些事件,你可以调用其他函数,并完成其他功能(比如绘图、弹出提示框、跳转到其他页面等等等等)。“事件”对于wxPython很重要,因为它是“事件驱动型GUI”(这部分你不理解就不理解吧,呵呵,记住就行了,然后在开发中慢慢理解)。
Inspector下面的Objs属性页给出一个树状结构,告诉你什么包含什么,你可以选择其中的一个(比如Frame1),然后查看它对应的Constr/Props/Evts。
3、下面让我们来添加一个按钮。点击最上面Palette中的Buttons,选择第一个图标wx.Button,按下,然后在Frame中的Panel中按下,看到Button1了吧。
然后我们可以修改其对应的各种属性。包括大小、位置、显示文字、样式等等。在什么地方改?刚才不是告诉你了吗?在左侧的Inspector下面改。
为什么Boa Constructor大家都感觉很容易呢?因为有些东西是可以直接拖拽所见即所得的。比如你可以试着直接用鼠标改变按钮的大小和位置
其他控件也基本类似,你可以试着添加各种各样的控件进去。其实Boa Constructor不包括所有wxPython中的控件,但是它包括了基本、普通、平常、我们大家会用到的控件。所以我们可以通过Boa Constructor来入门wxPython。
4、让我们添加一个事件(Event)。还记得我说过“事件驱动型GUI”吗?让我们“驱动”一下我们的程序吧。
点击选中Button,在左侧的Inspector的Evts下面单击ButtonEvent,右侧出现wx.EVT_BUTTON,双击之,在下面出现一个wx.EVT_BUTTON——OnButton1Button。好了,点击上面的“对号”。
保存源文件。在源文件(Source面板下面)的最下方你能看到形如:
这样的东东。在event.Skip()前面添加你想要的代码吧,比如:print u'haha',或者弹出一个提示面板:
或者任何代码。
(event.skip()表示将事件向下传递,你就别删它就行了)
(我上面的弹出窗口代码其实也可以用Boa Constructor来创建一个wx.Dialog然后再调用之,但是我没有这么做,因为我觉得这样更方便。你以后也会发现更方便的一些东西,然后你会逐渐的跳出Boa Constructor了…………当然你跳不出wxPython的怀抱,呵呵)
5、好了,万事大吉了!点击Editor页面下的Run Applictaion图标或者按下F9吧。运行下你的程序。当然,你必须在app为所选页面时才能运行程序。因为app是程序,frame不是。
6、接下来我们可以添加其他frame,添加其他控件,添加其他module(模块),下面的路你自己走吧……