Boa练习程序2
做一个地址簿的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的更多相关文章
- wxPython + Boa 练习程序
最近需要做点支持linux的跨平台gui,网上查到了wxPython及Boa,感觉不错,照着Boa文档做做练习. 代码: App: #!/usr/bin/env python #Boa:App:Boa ...
- 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 ...
- 嵌入式web服务器BOA的移植及应用
嵌入式web服务器子系统 一.嵌入式web服务器的控制流程 如下图所示,嵌入式web服务器可实现通过网络远程控制嵌入式开发板,便捷实用. 控制流程:浏览器 --->>>嵌入式开发板 ...
- 嵌入式Linux的web视频服务器的构建
http://blog.sina.com.cn/s/blog_53d02d550102v8bu.html随着嵌入式处理器和开源Linux 的广泛应用,各种视频服务在嵌入式系统中逐渐发展起来. 1.引言 ...
- arm linux上的第一个应用程序 BOA移植
1. 首先, linux在开发板上能跑起来了. 包括网络驱动也有了, ifconfig之后, 能看到在rcS里面设置的IP, 也能ping通windows主机了, 当然, 也要window关掉防火墙才 ...
- wxPython+Boa Constructor环境配置
配置之前先完成eclipse + Pydev的配置环境.详见http://www.cnblogs.com/dflower/archive/2010/05/13/1734522.html 1. 安装 w ...
- 基于boa服务器的web控制mini2440的GPIO口
win7 系统 虚拟机:ubuntu12.04 开发板:mini2440 上一篇已经详细的讲解了如何配置boa服务器,在这里我们就要利用boa服务器带来的便利,利用web控制开发板上的GIPO口,这 ...
- 基于mini2440的boa服务器移植
win7 系统 开发板:mini2440 虚拟机:ubuntu12.04 准备工作:确保主机与开发板之间能够正常通信,即能够ping通,具体的操作课参考我上一篇随笔. 1.首先从 http://ww ...
- boa配置文件详解
Web服务器boa配置文件参数说明 boa的配置文件是/etc/boa/boa.conf.Port:boa服务器监听的端口,默认的端口是80.如果端口小于1024,则必须是 root用户启动服务器. ...
随机推荐
- makefile文件的技术
[快速的学习笔记] gcc命令:http://www.cnblogs.com/ggjucheng/archive/2011/12/14/2287738.html#_Toc311642845 makef ...
- unity与Android交互
unity打包成安卓工程中的JAVA代码 public class UnityPlayerActivity extends Activity { //Unity中调用此函数 public int Ma ...
- android开发之路12(android四大组件&Fragment&AsyncTask类)
一.Activity组件1.简介:Activity组件是Android四大组件之一,通常一个Activity相当于一个用户界面,我们可以通过加载布局文件将Android提供的各种控件及自定义控件显示到 ...
- POJ 3921 Destroying the bus stations 沿着最短路迭代加深搜索
题目:给出一个图,问最少删除多少个点,使得从点1到点n经过的点数超过k个. 分析: 上网搜了一下,发现很多人用网络流做的,发现我不会.再后来看到这篇说网络流的做法是错的,囧. 后来发现点数有点少,直接 ...
- nodejs6-npm包管理工具
npm search:在官方仓库中搜索包https://registry.npmjs.org npm view:查看官方仓库中的包 npm install:在当前目录下安装指定包 npm instal ...
- JS 异常: Uncaught RangeError: Maximum call stack size exceeded
遇到了这个js异常, 总是吧浏览器搞崩溃,这是什么原因呢? 开始我也只能想到死循环, 也许是哪个条件判断写错了,其实不是.经过google,发现了一篇文章,内容请看: ================ ...
- 为Debug和Release分别设置Web.config
需求:在开发asp.net应用程序时,往往想在debug和release环境下使用不同的配置,而web.config文件却只有一个 解决方案:可以在原来的web.config中写下debug环境下的配 ...
- 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 ...
- Part 97 Performance of a multithreaded program
class Program { static void Main(string[] args) { Stopwatch s = new Stopwatch(); s.Start(); EvenNumb ...
- android sdk manager 无法更新
1.在C:\Windows\System32\drivers\etc找到Hosts文件用记事本打开,在最末尾添加如下代码,保存关闭: #Google主页203.208.46.146 www.googl ...