wxPython入门练习代码 四
自定义Model文件abtractmodel.py:
class AbstractModel(object):
def __init__(self):
self.listeners = []
def addListener(self, listenerFunc):
self.listeners.append(listenerFunc)
def removeListener(self, listenerFunc):
self.listeners.remove(listenerFunc)
def update(self):
for eachFunc in self.listeners:
eachFunc(self)
实例调用MVC文件ModelExample.py:
#!usr/bin/env python import wx
import abstractmodel class SimpleName(abstractmodel.AbstractModel):
def __init__(self,first="",last=""):
abstractmodel.AbstractModel.__init__(self)
self.set(first,last) def set(self,first,last):
self.first = first
self.last = last
self.update() class ModelExample(wx.Frame):
def __init__(self,parent,id):
wx.Frame.__init__(self,parent,id,'Flintstones',size=(340,200))
panel = wx.Panel(self)
panel.SetBackgroundColour("White")
self.Bind(wx.EVT_CLOSE,self.OnCloseWindow)
self.textFields = {}
self.createTextFields(panel)
self.model = SimpleName()
self.model.addListener(self.OnUpdate)
self.createButtonBar(panel) def buttonData(self):
return(("Fredify",self.OnFred),
("Wilmafy",self.OnWilma),
("Barnify",self.OnBarney),
("Bettify",self.OnBetty)) def createButtonBar(self,panel,yPos=0):
xPos=0
for eachLabel,eachHandler in self.buttonData():
pos = (xPos,yPos)
button =self.buildOneButton(panel,eachLabel,eachHandler,pos)
xPos += button.GetSize().width def buildOneButton(self,parent,label,handler,pos=(0,0)):
button = wx.Button(parent,-1,label,pos)
self.Bind(wx.EVT_BUTTON,handler,button)
return button def textFieldData(self):
return (("First Name",(10,50)),("Last Name",(10,80))) def createTextFields(self,panel):
for eachLabel,eachPos in self.textFieldData():
self.createCaptionedText(panel,eachLabel,eachPos) def createCaptionedText(self,panel,label,pos):
static = wx.StaticText(panel,wx.NewId(),label,pos)
static.SetBackgroundColour("White")
textPos = (pos[0]+75,pos[1])
self.textFields[label] = wx.TextCtrl(panel,wx.NewId(),
"",size=(100,-1),pos=textPos,
style=wx.TE_READONLY) def OnUpdate(self,model):
self.textFields["First Name"].SetValue(model.first)
self.textFields["Last Name"].SetValue(model.last) def OnFred(self,event):
self.model.set("Fred","Flintstones") def OnBarney(self,event):
self.model.set("Barney","Rubble") def OnWilma(self,event):
self.model.set("Wilma","Flintstones") def OnBetty(self,event):
self.model.set("Betty","Rubble") def OnCloseWindow(self,event):
self.Destroy() if __name__ == '__main__':
app = wx.PySimpleApp()
frame = ModelExample(parent=None,id=-1)
frame.Show()
app.MainLoop()

wxPython入门练习代码 四的更多相关文章
- wxPython入门练习代码 二
WxPython书籍[摘记] 1.任何wxPython应用程序都需要一个应用程序对象.这个应用程序对象必须是类wx.App或其定制的子类的一个实例.2.在OnInit()方法中将至少创建一个框架对象, ...
- wxPython入门练习代码 一
Bare.py: #1.导入必须的wxPython包 import wx #2.子类化wx应用程序类 class App(wx.App): #3.定义应用程序初始化方法 def OnInit(self ...
- wxPython入门练习代码 三
DoubleEventFrame.py: #!/usr/bin/env/ python import wx class DoubleEventFrame(wx.Frame): def __init__ ...
- WCF入门教程(四)通过Host代码方式来承载服务
WCF入门教程(四)通过Host代码方式来承载服务 之前已经讲过WCF对外发布服务的具体方式. WCF入门教程(一)简介 Host承载,可以是web,也可以是控制台程序等等.比WebService有更 ...
- WCF入门教程(四)通过Host代码方式来承载服务 一个WCF使用TCP协议进行通协的例子 jquery ajax调用WCF,采用System.ServiceModel.WebHttpBinding System.ServiceModel.WSHttpBinding协议 学习WCF笔记之二 无废话WCF入门教程一[什么是WCF]
WCF入门教程(四)通过Host代码方式来承载服务 Posted on 2014-05-15 13:03 停留的风 阅读(7681) 评论(0) 编辑 收藏 WCF入门教程(四)通过Host代码方式来 ...
- 无废话ExtJs 入门教程十四[文本编辑器:Editor]
无废话ExtJs 入门教程十四[文本编辑器:Editor] extjs技术交流,欢迎加群(201926085) ExtJs自带的编辑器没有图片上传的功能,大部分时候能够满足我们的需要. 但有时候这个功 ...
- 【知识整理】这可能是最好的RxJava 2.x 入门教程(四)
这可能是最好的RxJava 2.x入门教程系列专栏 文章链接: 这可能是最好的RxJava 2.x 入门教程(一) 这可能是最好的RxJava 2.x 入门教程(二) 这可能是最好的RxJava 2. ...
- Wxpython入门
Wxpython入门 api文档以及中文教程: https://pan.baidu.com/s/1TDTgHg9Mwc74ODQy68YnlQ 提取码:354n 入门示例 frame=wx.Frame ...
- MyBatis基础入门《十四》ResultMap子元素(association )
MyBatis基础入门<十四>ResultMap子元素(association ) 1. id: >> 一般对应数据库中改行的主键ID,设置此项可以提高Mybatis的性能 2 ...
随机推荐
- win7的HOST文件夹具体位置
win7的HOST文件位置为C:\WINDOWS\system32\drivers\etc\文件夹下,快捷查看方法如下: 1.按win+r,输入C:\WINDOWS\system32\drivers\ ...
- 前端 JS POST提交
/*点击事件*/ function deleteExportItemAndEportUser(id) { post("deleteExportItemAndEportUser" ...
- Arduino 极速入门系列–1 点亮 LED
本篇内容为,使用 Arduino 点亮 LED 的做法示范.很简单的一个入门示范.我们让 LED 闪. 本篇使用到的工具和材料 Arduino Mini Pro 1 PCS Mini USB 数据线 ...
- 数据源增量处理(Delta Proess)三大属性:Recod Mode、Delta Type、Serialization
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- php : RBAC 基于角色的用户权限控制-表参考
--管理员表 CREATE TABLE `sw_manager` ( `mg_id` int(11) NOT NULL AUTO_INCREMENT, `mg_name` varchar(32) NO ...
- java简单计算器
写的一个小计算器,留着以后看吧. import java.awt.BorderLayout; import java.awt.Button; import java.awt.Color; import ...
- 【转】部分电脑安装升级 ubuntu 12.04 后无法挂起问题的解决(挂起无法唤醒同样有效)
原文地址:http://blog.csdn.net/longerzone/article/details/7860232 我的Ubuntu12.04是安装的windows桌面安装版(使用wubi安装) ...
- shell中三种引号的用法
1.单引号 所见即所得 例如:var=123 var2='${var}123' echo var2 var2结果为${var}123 2.双引号 输出引号中的内容,若存在命令.变量等,会先执行命令解析 ...
- 浏览器Range,Selection等选中文本对象
Range对象 Range 对象表示文档的连续范围区域,如用户在浏览器窗口中用鼠标拖动选中的区域. 最常见的Range是用户文本选择范围(user text selection).当用户选择了页面上的 ...
- Java 源码解析之局部变量检查
package com.tang; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream ...