#!/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()
![](https://i-blog.csdnimg.cn/blog_migrate/f26a0fffb7f62fd573937e7a27b86b62.png)