首页 > 代码库 > wxPython入门练习代码 四
wxPython入门练习代码 四
自定义Model文件abtractmodel.py:
1 class AbstractModel(object): 2 3 def __init__(self): 4 self.listeners = [] 5 6 def addListener(self, listenerFunc): 7 self.listeners.append(listenerFunc) 8 9 def removeListener(self, listenerFunc):10 self.listeners.remove(listenerFunc)11 12 def update(self):13 for eachFunc in self.listeners:14 eachFunc(self)
实例调用MVC文件ModelExample.py:
1 #!usr/bin/env python 2 3 import wx 4 import abstractmodel 5 6 7 class SimpleName(abstractmodel.AbstractModel): 8 def __init__(self,first="",last=""): 9 abstractmodel.AbstractModel.__init__(self)10 self.set(first,last)11 12 def set(self,first,last):13 self.first = first14 self.last = last15 self.update()16 17 class ModelExample(wx.Frame):18 def __init__(self,parent,id):19 wx.Frame.__init__(self,parent,id,‘Flintstones‘,size=(340,200))20 panel = wx.Panel(self)21 panel.SetBackgroundColour("White")22 self.Bind(wx.EVT_CLOSE,self.OnCloseWindow)23 self.textFields = {}24 self.createTextFields(panel)25 self.model = SimpleName()26 self.model.addListener(self.OnUpdate)27 self.createButtonBar(panel)28 29 def buttonData(self):30 return(("Fredify",self.OnFred),31 ("Wilmafy",self.OnWilma),32 ("Barnify",self.OnBarney),33 ("Bettify",self.OnBetty))34 35 def createButtonBar(self,panel,yPos=0):36 xPos=037 for eachLabel,eachHandler in self.buttonData():38 pos = (xPos,yPos)39 button =self.buildOneButton(panel,eachLabel,eachHandler,pos)40 xPos += button.GetSize().width41 42 def buildOneButton(self,parent,label,handler,pos=(0,0)):43 button = wx.Button(parent,-1,label,pos)44 self.Bind(wx.EVT_BUTTON,handler,button)45 return button46 47 def textFieldData(self):48 return (("First Name",(10,50)),("Last Name",(10,80)))49 50 def createTextFields(self,panel):51 for eachLabel,eachPos in self.textFieldData():52 self.createCaptionedText(panel,eachLabel,eachPos)53 54 def createCaptionedText(self,panel,label,pos):55 static = wx.StaticText(panel,wx.NewId(),label,pos)56 static.SetBackgroundColour("White")57 textPos = (pos[0]+75,pos[1])58 self.textFields[label] = wx.TextCtrl(panel,wx.NewId(),59 "",size=(100,-1),pos=textPos,60 style=wx.TE_READONLY)61 62 def OnUpdate(self,model):63 self.textFields["First Name"].SetValue(model.first)64 self.textFields["Last Name"].SetValue(model.last)65 66 def OnFred(self,event):67 self.model.set("Fred","Flintstones")68 69 def OnBarney(self,event):70 self.model.set("Barney","Rubble")71 72 def OnWilma(self,event):73 self.model.set("Wilma","Flintstones")74 75 def OnBetty(self,event):76 self.model.set("Betty","Rubble")77 78 def OnCloseWindow(self,event):79 self.Destroy()80 81 if __name__ == ‘__main__‘:82 app = wx.PySimpleApp()83 frame = ModelExample(parent=None,id=-1)84 frame.Show()85 app.MainLoop()86
wxPython入门练习代码 四
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。