Boa constructor简介

百里意智
2023-12-01

我用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面板下面)的最下方你能看到形如:   

def OnButton1Button(self, event):
        event.Skip()

这样的东东。在event.Skip()前面添加你想要的代码吧,比如:pring u'haha',或者弹出一个提示面板:           

dlg = wx.MessageDialog(self,   u'yes',
                                   u'You got it~', 
                                   wx.OK | wx.ICON_INFORMATION
                                   )
dlg.ShowModal()
dlg.Destroy()

或者任何代码。

(event.skip()表示将事件向下传递,你就别删它就行了)

(我上面的弹出窗口代码其实也可以用Boa Constructor来创建一个wx.Dialog然后再调用之,但是我没有这么做,因为我觉得这样更方便。你以后也会发现更方便的一些东西,然后你会逐渐的跳出Boa Constructor了…………当然你跳不出wxPython的怀抱,呵呵)

5、好了,万事大吉了!点击Editor页面下的Run Applictaion图标或者按下F9吧。运行下你的程序。当然,你必须在app为所选页面时才能运行程序。因为app是程序,frame不是。

6、接下来我们可以添加其他frame,添加其他控件,添加其他module(模块),下面的路你自己走吧……

(我有个小建议,你试着去看一下Boa constructor的英文帮助,没有害处)

目前我发现的Boa contructor会出现的问题:

1、有时候Boa constructor会挂掉,只能强行关闭。通常这种情况都是程序有错误所造成的。 这个不能怪Boa constructor,你在IDLE中运行这些程序,也会假死。 有时候我也只能在命令行窗口中运行。

2、Boa constructor不能实时刷新,我们必须点击刷新或提交按钮才能看到改动。 是的,就是这样。所以不要试图一次添加所有你能想到的东西,试着分几次来添加。

3、中文目录的问题。 源程序文件无法运行、保存、

花絮:作者Riaan Booysen很厉害的说,有一次我去看wxPython的源代码,发现也有他的大名。

高级:如果你自认为wxPython高手,那么基本上就告别Boa constructor了。不过从Boa constructor起步还是很不错的,是不是?

 类似资料: