Added the sample code from wxPython In Action to the samples dir
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42925 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
96
wxPython/samples/wxPIA_book/Chapter-05/goodExample.py
Normal file
96
wxPython/samples/wxPIA_book/Chapter-05/goodExample.py
Normal file
@@ -0,0 +1,96 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
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("White")
|
||||
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),
|
||||
("", "", ""),
|
||||
("&Options...", "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)
|
||||
|
||||
# Just grouping the empty event handlers together
|
||||
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()
|
||||
|
Reference in New Issue
Block a user