wxpython 5.1 重构后的代码 RefactorExample2

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import wx
 
class RefactorExample(wx.Frame):
    
    def __init__(self,parent,id):
        wx.Frame.__init__(self,parent,id,'ReFactor Example',
                          size=(340,200))
        panel=wx.Panel(self,-1)
        panel.SetBackgroundColour("While")
        self.Bind(wx.EVT_CLOSE,self.OnCloseWindow)
        self.createMenuBar()
        self.createButtonBar(panel)
        self.createTextFields(panel)
        
    def menuData(self):
        return (("File",("&Open","Open in status bar",self.OnOpen),
                 ("&Quit","Quit",self.OnCloseWindow)),
        ("&Edit",("&Copy","Copy",self.OnCopy),
         ("C&ut","Cut",self.OnCut),
         ("&Paste","Paste",self.OnPaste),
         ("","",""),
         ("&Option","DisplayOptions",self.OnOptions)))
        
    #创建菜单
    def createMenuBar(self):
        menuBar=wx.MenuBar()
        for eachMenuData in self.menuData():
            menuLabel=eachMenuData[0]
            menuItems=eachMenuData[1:]
            menuBar.Append(self.createMenu(menuItems),menuLabel)
        self.SetMenuBar(menuBar)
        
    def createMenu(self,menuData):
        menu=wx.Menu()
        for eachLabel,eachStatus,eachHandler in menuData:
            if not eachLabel:
                menu.AppendSeparator()
                continue
            menuItem=menu.Append(-1,eachLabel,eachStatus)
            self.Bind(wx.EVT_MENU,eachHandler,menuItem)
        return menu
    #按钮数据
    def buttonData(self):
        return (("&First",self.OnFirst),
                ("&<<PREV",self.OnPrev),
                ("&NEXT>>",self.OnNext),
                ("Last",self.OnLast))
    #创建按钮们
    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])
        wx.TextCtrl(panel,wx.NewId(),"",size=(100,-1),pos=textPos)
    
    
    #空事件处理器 放在一起
    def OnPrev(self,event):pass
    def OnNext(self,event):pass
    def OnLast(self,event):pass
    def OnFirst(self,event):pass
    def OnOpen(self,event):pass
    def OnCopy(self,event):pass
    def OnCut(self,event):pass
    def OnPaste(self,event):pass
    def OnOptions(self,event):pass
        
    def OnCloseWindow(self,event):
        self.Destroy()
        
if __name__=='__main__':
    app=wx.PySimpleApp()
    frame=RefactorExample(parent=None,id=-1)
    frame.Show()
    app.MainLoop()
    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值