zoukankan      html  css  js  c++  java
  • 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 = first
    14         self.last = last
    15         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=0
    37         for eachLabel,eachHandler in self.buttonData():
    38             pos = (xPos,yPos)
    39             button =self.buildOneButton(panel,eachLabel,eachHandler,pos)
    40             xPos += button.GetSize().width
    41             
    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 button
    46         
    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     

  • 相关阅读:
    linux系统数据落盘之细节
    不同类型文件“可读写”的含义
    zz存储系统中缓存的三种类型
    library满(磁带紊乱、虚拟机恢复失败)
    TSM日常维护
    入门级磁带机使用方法
    关于 tsm 磁带槽位
    TSM lan-free原理及配置
    TSM中备份(Backup)和归档(Archive)的区别
    指定stg备份 (即指定tape 磁带)
  • 原文地址:https://www.cnblogs.com/ljfy-yjw/p/5831664.html
Copyright © 2011-2022 走看看