做一个地址簿的gui。

 #Boa:Frame:AddressEntry

 import wx

 def create(parent):
return AddressEntry(parent) [wxID_ADDRESSENTRY, wxID_ADDRESSENTRYADD, wxID_ADDRESSENTRYADDRESS,
wxID_ADDRESSENTRYCLOSE, wxID_ADDRESSENTRYDELETE, wxID_ADDRESSENTRYFIRSTNAME,
wxID_ADDRESSENTRYLASTNAME, wxID_ADDRESSENTRYLISTCTRL1,
wxID_ADDRESSENTRYPANEL1, wxID_ADDRESSENTRYSAVE, wxID_ADDRESSENTRYSTADDRESS,
wxID_ADDRESSENTRYSTFIRSTNAME, wxID_ADDRESSENTRYSTLASTNAME,
] = [wx.NewId() for _init_ctrls in range(13)] class AddressEntry(wx.Frame):
def _init_coll_fgsFields_Items(self, parent):
# generated method, don't edit parent.AddWindow(self.stFirstName, 0, border=2,
flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL)
parent.AddWindow(self.firstName, 0, border=2, flag=wx.EXPAND | wx.ALL)
parent.AddWindow(self.stLastName, 0, border=2,
flag=wx.ALL | wx.ALIGN_CENTER_VERTICAL)
parent.AddWindow(self.lastName, 0, border=2, flag=wx.EXPAND | wx.ALL)
parent.AddWindow(self.stAddress, 0, border=2,
flag=wx.ALL | wx.ALIGN_CENTER_VERTICAL)
parent.AddWindow(self.address, 0, border=2, flag=wx.EXPAND | wx.ALL) def _init_coll_fgsButtons_Items(self, parent):
# generated method, don't edit parent.AddWindow(self.add, 0, border=2, flag=wx.ALL)
parent.AddWindow(self.delete, 0, border=2, flag=wx.ALL)
parent.AddWindow(self.save, 0, border=2, flag=wx.ALL)
parent.AddWindow(self.close, 0, border=2, flag=wx.ALL) def _init_coll_bsMain_Items(self, parent):
# generated method, don't edit parent.AddWindow(self.listCtrl1, 1, border=2, flag=wx.ALL | wx.EXPAND)
parent.AddSizer(self.fgsFields, 0, border=0, flag=wx.EXPAND)
parent.AddSizer(self.fgsButtons, 0, border=0, flag=0) def _init_coll_fgsFields_Growables(self, parent):
# generated method, don't edit parent.AddGrowableCol(1) def _init_coll_listCtrl1_Columns(self, parent):
# generated method, don't edit parent.InsertColumn(col=0, format=wx.LIST_FORMAT_LEFT,
heading=u'First Name', width=-1)
parent.InsertColumn(col=1, format=wx.LIST_FORMAT_LEFT,
heading=u'Last Name', width=-1)
parent.InsertColumn(col=2, format=wx.LIST_FORMAT_LEFT, heading=u'City',
width=-1)
parent.InsertColumn(col=3, format=wx.LIST_FORMAT_LEFT,
heading=u'Country', width=-1) def _init_sizers(self):
# generated method, don't edit
self.bsMain = wx.BoxSizer(orient=wx.VERTICAL) self.fgsFields = wx.FlexGridSizer(cols=2, hgap=0, rows=0, vgap=0) self.fgsButtons = wx.FlexGridSizer(cols=0, hgap=0, rows=1, vgap=0) self._init_coll_bsMain_Items(self.bsMain)
self._init_coll_fgsFields_Items(self.fgsFields)
self._init_coll_fgsFields_Growables(self.fgsFields)
self._init_coll_fgsButtons_Items(self.fgsButtons) self.panel1.SetSizer(self.bsMain) def _init_ctrls(self, prnt):
# generated method, don't edit
wx.Frame.__init__(self, id=wxID_ADDRESSENTRY, name=u'AddressEntry',
parent=prnt, pos=wx.Point(623, 192), size=wx.Size(400, 506),
style=wx.DEFAULT_FRAME_STYLE, title=u'Address entry form')
self.SetClientSize(wx.Size(392, 479)) self.panel1 = wx.Panel(id=wxID_ADDRESSENTRYPANEL1, name='panel1',
parent=self, pos=wx.Point(0, 0), size=wx.Size(392, 479),
style=wx.TAB_TRAVERSAL) self.listCtrl1 = wx.ListCtrl(id=wxID_ADDRESSENTRYLISTCTRL1,
name='listCtrl1', parent=self.panel1, pos=wx.Point(2, 2),
size=wx.Size(388, 346), style=wx.LC_REPORT)
self._init_coll_listCtrl1_Columns(self.listCtrl1) self.stFirstName = wx.StaticText(id=wxID_ADDRESSENTRYSTFIRSTNAME,
label=u'First Name', name=u'stFirstName', parent=self.panel1,
pos=wx.Point(2, 356), size=wx.Size(62, 14), style=0) self.firstName = wx.TextCtrl(id=wxID_ADDRESSENTRYFIRSTNAME,
name=u'firstName', parent=self.panel1, pos=wx.Point(68, 352),
size=wx.Size(322, 22), style=0, value=u'') self.stLastName = wx.StaticText(id=wxID_ADDRESSENTRYSTLASTNAME,
label=u'Last Name', name=u'stLastName', parent=self.panel1,
pos=wx.Point(2, 382), size=wx.Size(62, 14), style=0) self.lastName = wx.TextCtrl(id=wxID_ADDRESSENTRYLASTNAME,
name=u'lastName', parent=self.panel1, pos=wx.Point(68, 378),
size=wx.Size(322, 22), style=0, value=u'') self.stAddress = wx.StaticText(id=wxID_ADDRESSENTRYSTADDRESS,
label=u'Address', name=u'stAddress', parent=self.panel1,
pos=wx.Point(2, 419), size=wx.Size(62, 14), style=0) self.address = wx.TextCtrl(id=wxID_ADDRESSENTRYADDRESS, name=u'address',
parent=self.panel1, pos=wx.Point(68, 404), size=wx.Size(322, 45),
style=wx.TE_MULTILINE, value=u'') self.add = wx.Button(id=wx.ID_ADD, label=u'', name=u'add',
parent=self.panel1, pos=wx.Point(2, 453), size=wx.Size(75, 24),
style=0) self.delete = wx.Button(id=wx.ID_DELETE, label=u'', name=u'delete',
parent=self.panel1, pos=wx.Point(81, 453), size=wx.Size(75, 24),
style=0) self.save = wx.Button(id=wx.ID_SAVE, label=u'', name=u'save',
parent=self.panel1, pos=wx.Point(160, 453), size=wx.Size(75, 24),
style=0) self.close = wx.Button(id=wx.ID_CLOSE, label=u'', name=u'close',
parent=self.panel1, pos=wx.Point(239, 453), size=wx.Size(75, 24),
style=0) self._init_sizers() def __init__(self, parent):
self._init_ctrls(parent) if __name__ == '__main__':
app = wx.PySimpleApp()
frame = create(None)
frame.Show() app.MainLoop()

运行图:

Boa练习程序2的更多相关文章

  1. wxPython + Boa 练习程序

    最近需要做点支持linux的跨平台gui,网上查到了wxPython及Boa,感觉不错,照着Boa文档做做练习. 代码: App: #!/usr/bin/env python #Boa:App:Boa ...

  2. boa cgi程序cgi_header: unable to find LFLF

    ftp必须用二进制模式上传才可以 sqlite3 arm-linux-gcc hello.c -o hello.cgi -I /cgi/include -L /cgi/lib -static -lsq ...

  3. 嵌入式web服务器BOA的移植及应用

    嵌入式web服务器子系统 一.嵌入式web服务器的控制流程 如下图所示,嵌入式web服务器可实现通过网络远程控制嵌入式开发板,便捷实用. 控制流程:浏览器 --->>>嵌入式开发板 ...

  4. 嵌入式Linux的web视频服务器的构建

    http://blog.sina.com.cn/s/blog_53d02d550102v8bu.html随着嵌入式处理器和开源Linux 的广泛应用,各种视频服务在嵌入式系统中逐渐发展起来. 1.引言 ...

  5. arm linux上的第一个应用程序 BOA移植

    1. 首先, linux在开发板上能跑起来了. 包括网络驱动也有了, ifconfig之后, 能看到在rcS里面设置的IP, 也能ping通windows主机了, 当然, 也要window关掉防火墙才 ...

  6. wxPython+Boa Constructor环境配置

    配置之前先完成eclipse + Pydev的配置环境.详见http://www.cnblogs.com/dflower/archive/2010/05/13/1734522.html 1. 安装 w ...

  7. 基于boa服务器的web控制mini2440的GPIO口

    win7 系统  虚拟机:ubuntu12.04 开发板:mini2440 上一篇已经详细的讲解了如何配置boa服务器,在这里我们就要利用boa服务器带来的便利,利用web控制开发板上的GIPO口,这 ...

  8. 基于mini2440的boa服务器移植

    win7 系统  开发板:mini2440 虚拟机:ubuntu12.04 准备工作:确保主机与开发板之间能够正常通信,即能够ping通,具体的操作课参考我上一篇随笔. 1.首先从 http://ww ...

  9. boa配置文件详解

    Web服务器boa配置文件参数说明 boa的配置文件是/etc/boa/boa.conf.Port:boa服务器监听的端口,默认的端口是80.如果端口小于1024,则必须是  root用户启动服务器. ...

随机推荐

  1. makefile文件的技术

    [快速的学习笔记] gcc命令:http://www.cnblogs.com/ggjucheng/archive/2011/12/14/2287738.html#_Toc311642845 makef ...

  2. unity与Android交互

    unity打包成安卓工程中的JAVA代码 public class UnityPlayerActivity extends Activity { //Unity中调用此函数 public int Ma ...

  3. android开发之路12(android四大组件&Fragment&AsyncTask类)

    一.Activity组件1.简介:Activity组件是Android四大组件之一,通常一个Activity相当于一个用户界面,我们可以通过加载布局文件将Android提供的各种控件及自定义控件显示到 ...

  4. POJ 3921 Destroying the bus stations 沿着最短路迭代加深搜索

    题目:给出一个图,问最少删除多少个点,使得从点1到点n经过的点数超过k个. 分析: 上网搜了一下,发现很多人用网络流做的,发现我不会.再后来看到这篇说网络流的做法是错的,囧. 后来发现点数有点少,直接 ...

  5. nodejs6-npm包管理工具

    npm search:在官方仓库中搜索包https://registry.npmjs.org npm view:查看官方仓库中的包 npm install:在当前目录下安装指定包 npm instal ...

  6. JS 异常: Uncaught RangeError: Maximum call stack size exceeded

    遇到了这个js异常, 总是吧浏览器搞崩溃,这是什么原因呢? 开始我也只能想到死循环, 也许是哪个条件判断写错了,其实不是.经过google,发现了一篇文章,内容请看: ================ ...

  7. 为Debug和Release分别设置Web.config

    需求:在开发asp.net应用程序时,往往想在debug和release环境下使用不同的配置,而web.config文件却只有一个 解决方案:可以在原来的web.config中写下debug环境下的配 ...

  8. Part 11 Search filter in AngularJS

    As we type in the search textbox, all the columns in the table must be searched and only the matchin ...

  9. Part 97 Performance of a multithreaded program

    class Program { static void Main(string[] args) { Stopwatch s = new Stopwatch(); s.Start(); EvenNumb ...

  10. android sdk manager 无法更新

    1.在C:\Windows\System32\drivers\etc找到Hosts文件用记事本打开,在最末尾添加如下代码,保存关闭: #Google主页203.208.46.146 www.googl ...