wxPython入门练习代码 四
2016-09-01 22:54
399 查看
自定义Model文件abtractmodel.py:
实例调用MVC文件ModelExample.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入门练习代码 三
- selenium入门练习01代码补充
- 算法入门经典第5章,练习代码
- 算法竞赛入门经典 第二章 上机练习(C++代码)
- Java——I/O入门相关练习代码
- Python(编程小白的第一本 Python 入门书) 学习笔记2——代码练习
- 算法竞赛入门经典,练习代码 ,3.4.9 上机练习
- python入门代码练习
- 【day 9】python编程:从入门到实践学习笔记-测试代码(末附练习答案代码)
- 第五届蓝桥杯练习题 - 入门练习Java解题代码
- 【day 4】python编程:从入门到实践学习笔记-字典(末附练习答案代码)
- 我的JAVA练习代码
- 学Shellcode 的练习代码
- 操作系统入门(五) - 载入32位保护模式代码为c做准备
- [推荐]ASP.NET 2.0 快速入门系列课程(附代码示例)[WMV]
- 新手入门常用代码集锦
- C#入门代码
- C#入门代码