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:
15
wxPython/samples/wxPIA_book/Chapter-05/abstractmodel.py
Normal file
15
wxPython/samples/wxPIA_book/Chapter-05/abstractmodel.py
Normal file
@@ -0,0 +1,15 @@
|
||||
class AbstractModel(object):
|
||||
|
||||
def __init__(self):
|
||||
self.listeners = []
|
||||
|
||||
def addListener(self, listenerFunc):
|
||||
self.listeners.append(listenerFunc)
|
||||
|
||||
def removeListener(self, listenerFunc):
|
||||
self.listeners.remove(listenerFunc)
|
||||
|
||||
def update(self):
|
||||
for eachFunc in self.listeners:
|
||||
eachFunc(self)
|
||||
|
77
wxPython/samples/wxPIA_book/Chapter-05/badExample.py
Normal file
77
wxPython/samples/wxPIA_book/Chapter-05/badExample.py
Normal file
@@ -0,0 +1,77 @@
|
||||
#!/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")
|
||||
prevButton = wx.Button(panel, -1, "<< PREV", pos=(80, 0))
|
||||
self.Bind(wx.EVT_BUTTON, self.OnPrev, prevButton)
|
||||
nextButton = wx.Button(panel, -1, "NEXT >>", pos=(160, 0))
|
||||
self.Bind(wx.EVT_BUTTON, self.OnNext, nextButton)
|
||||
self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
|
||||
|
||||
menuBar = wx.MenuBar()
|
||||
menu1 = wx.Menu()
|
||||
openMenuItem = menu1.Append(-1, "&Open", "Copy in status bar")
|
||||
self.Bind(wx.EVT_MENU, self.OnOpen, openMenuItem)
|
||||
quitMenuItem = menu1.Append(-1, "&Quit", "Quit")
|
||||
self.Bind(wx.EVT_MENU, self.OnCloseWindow, quitMenuItem)
|
||||
menuBar.Append(menu1, "&File")
|
||||
menu2 = wx.Menu()
|
||||
copyItem = menu2.Append(-1, "&Copy", "Copy")
|
||||
self.Bind(wx.EVT_MENU, self.OnCopy, copyItem)
|
||||
cutItem = menu2.Append(-1, "C&ut", "Cut")
|
||||
self.Bind(wx.EVT_MENU, self.OnCut, cutItem)
|
||||
pasteItem = menu2.Append(-1, "Paste", "Paste")
|
||||
self.Bind(wx.EVT_MENU, self.OnPaste, pasteItem)
|
||||
menuBar.Append(menu2, "&Edit")
|
||||
self.SetMenuBar(menuBar)
|
||||
|
||||
static = wx.StaticText(panel, wx.NewId(), "First Name",
|
||||
pos=(10, 50))
|
||||
static.SetBackgroundColour("White")
|
||||
text = wx.TextCtrl(panel, wx.NewId(), "", size=(100, -1),
|
||||
pos=(80, 50))
|
||||
|
||||
static2 = wx.StaticText(panel, wx.NewId(), "Last Name",
|
||||
pos=(10, 80))
|
||||
static2.SetBackgroundColour("White")
|
||||
text2 = wx.TextCtrl(panel, wx.NewId(), "", size=(100, -1),
|
||||
pos=(80, 80))
|
||||
|
||||
firstButton = wx.Button(panel, -1, "FIRST")
|
||||
self.Bind(wx.EVT_BUTTON, self.OnFirst, firstButton)
|
||||
|
||||
menu2.AppendSeparator()
|
||||
optItem = menu2.Append(-1, "&Options...", "Display Options")
|
||||
self.Bind(wx.EVT_MENU, self.OnOptions, optItem)
|
||||
|
||||
lastButton = wx.Button(panel, -1, "LAST", pos=(240, 0))
|
||||
self.Bind(wx.EVT_BUTTON, self.OnLast, lastButton)
|
||||
|
||||
|
||||
# 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()
|
||||
|
34
wxPython/samples/wxPIA_book/Chapter-05/generictable.py
Normal file
34
wxPython/samples/wxPIA_book/Chapter-05/generictable.py
Normal file
@@ -0,0 +1,34 @@
|
||||
import wx
|
||||
import wx.grid
|
||||
|
||||
class GenericTable(wx.grid.PyGridTableBase):
|
||||
|
||||
def __init__(self, data, rowLabels=None, colLabels=None):
|
||||
wx.grid.PyGridTableBase.__init__(self)
|
||||
self.data = data
|
||||
self.rowLabels = rowLabels
|
||||
self.colLabels = colLabels
|
||||
|
||||
def GetNumberRows(self):
|
||||
return len(self.data)
|
||||
|
||||
def GetNumberCols(self):
|
||||
return len(self.data[0])
|
||||
|
||||
def GetColLabelValue(self, col):
|
||||
if self.colLabels:
|
||||
return self.colLabels[col]
|
||||
|
||||
def GetRowLabelValue(self, row):
|
||||
if self.rowLabels:
|
||||
return self.rowLabels[row]
|
||||
|
||||
def IsEmptyCell(self, row, col):
|
||||
return False
|
||||
|
||||
def GetValue(self, row, col):
|
||||
return self.data[row][col]
|
||||
|
||||
def SetValue(self, row, col, value):
|
||||
pass
|
||||
|
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()
|
||||
|
34
wxPython/samples/wxPIA_book/Chapter-05/gridGeneric.py
Normal file
34
wxPython/samples/wxPIA_book/Chapter-05/gridGeneric.py
Normal file
@@ -0,0 +1,34 @@
|
||||
import wx
|
||||
import wx.grid
|
||||
import generictable
|
||||
|
||||
|
||||
data = (("Bob", "Dernier"), ("Ryne", "Sandberg"),
|
||||
("Gary", "Matthews"), ("Leon", "Durham"),
|
||||
("Keith", "Moreland"), ("Ron", "Cey"),
|
||||
("Jody", "Davis"), ("Larry", "Bowa"),
|
||||
("Rick", "Sutcliffe"))
|
||||
|
||||
colLabels = ("Last", "First")
|
||||
rowLabels = ("CF", "2B", "LF", "1B", "RF", "3B", "C", "SS", "P")
|
||||
|
||||
|
||||
class SimpleGrid(wx.grid.Grid):
|
||||
def __init__(self, parent):
|
||||
wx.grid.Grid.__init__(self, parent, -1)
|
||||
tableBase = generictable.GenericTable(data, rowLabels,
|
||||
colLabels)
|
||||
self.SetTable(tableBase)
|
||||
|
||||
class TestFrame(wx.Frame):
|
||||
def __init__(self, parent):
|
||||
wx.Frame.__init__(self, parent, -1, "A Grid",
|
||||
size=(275, 275))
|
||||
grid = SimpleGrid(self)
|
||||
|
||||
if __name__ == '__main__':
|
||||
app = wx.PySimpleApp()
|
||||
frame = TestFrame(None)
|
||||
frame.Show(True)
|
||||
app.MainLoop()
|
||||
|
54
wxPython/samples/wxPIA_book/Chapter-05/gridModel.py
Normal file
54
wxPython/samples/wxPIA_book/Chapter-05/gridModel.py
Normal file
@@ -0,0 +1,54 @@
|
||||
import wx
|
||||
import wx.grid
|
||||
|
||||
class LineupTable(wx.grid.PyGridTableBase):
|
||||
|
||||
data = (("CF", "Bob", "Dernier"), ("2B", "Ryne", "Sandberg"),
|
||||
("LF", "Gary", "Matthews"), ("1B", "Leon", "Durham"),
|
||||
("RF", "Keith", "Moreland"), ("3B", "Ron", "Cey"),
|
||||
("C", "Jody", "Davis"), ("SS", "Larry", "Bowa"),
|
||||
("P", "Rick", "Sutcliffe"))
|
||||
|
||||
colLabels = ("Last", "First")
|
||||
|
||||
def __init__(self):
|
||||
wx.grid.PyGridTableBase.__init__(self)
|
||||
|
||||
def GetNumberRows(self):
|
||||
return len(self.data)
|
||||
|
||||
def GetNumberCols(self):
|
||||
return len(self.data[0]) - 1
|
||||
|
||||
def GetColLabelValue(self, col):
|
||||
return self.colLabels[col]
|
||||
|
||||
def GetRowLabelValue(self, row):
|
||||
return self.data[row][0]
|
||||
|
||||
def IsEmptyCell(self, row, col):
|
||||
return False
|
||||
|
||||
def GetValue(self, row, col):
|
||||
return self.data[row][col + 1]
|
||||
|
||||
def SetValue(self, row, col, value):
|
||||
pass
|
||||
|
||||
class SimpleGrid(wx.grid.Grid):
|
||||
def __init__(self, parent):
|
||||
wx.grid.Grid.__init__(self, parent, -1)
|
||||
self.SetTable(LineupTable())
|
||||
|
||||
class TestFrame(wx.Frame):
|
||||
def __init__(self, parent):
|
||||
wx.Frame.__init__(self, parent, -1, "A Grid",
|
||||
size=(275, 275))
|
||||
grid = SimpleGrid(self)
|
||||
|
||||
if __name__ == '__main__':
|
||||
app = wx.PySimpleApp()
|
||||
frame = TestFrame(None)
|
||||
frame.Show(True)
|
||||
app.MainLoop()
|
||||
|
49
wxPython/samples/wxPIA_book/Chapter-05/gridNoModel.py
Normal file
49
wxPython/samples/wxPIA_book/Chapter-05/gridNoModel.py
Normal file
@@ -0,0 +1,49 @@
|
||||
import wx
|
||||
import wx.grid
|
||||
|
||||
class SimpleGrid(wx.grid.Grid):
|
||||
def __init__(self, parent):
|
||||
wx.grid.Grid.__init__(self, parent, -1)
|
||||
self.CreateGrid(9, 2)
|
||||
self.SetColLabelValue(0, "First")
|
||||
self.SetColLabelValue(1, "Last")
|
||||
self.SetRowLabelValue(0, "CF")
|
||||
self.SetCellValue(0, 0, "Bob")
|
||||
self.SetCellValue(0, 1, "Dernier")
|
||||
self.SetRowLabelValue(1, "2B")
|
||||
self.SetCellValue(1, 0, "Ryne")
|
||||
self.SetCellValue(1, 1, "Sandberg")
|
||||
self.SetRowLabelValue(2, "LF")
|
||||
self.SetCellValue(2, 0, "Gary")
|
||||
self.SetCellValue(2, 1, "Matthews")
|
||||
self.SetRowLabelValue(3, "1B")
|
||||
self.SetCellValue(3, 0, "Leon")
|
||||
self.SetCellValue(3, 1, "Durham")
|
||||
self.SetRowLabelValue(4, "RF")
|
||||
self.SetCellValue(4, 0, "Keith")
|
||||
self.SetCellValue(4, 1, "Moreland")
|
||||
self.SetRowLabelValue(5, "3B")
|
||||
self.SetCellValue(5, 0, "Ron")
|
||||
self.SetCellValue(5, 1, "Cey")
|
||||
self.SetRowLabelValue(6, "C")
|
||||
self.SetCellValue(6, 0, "Jody")
|
||||
self.SetCellValue(6, 1, "Davis")
|
||||
self.SetRowLabelValue(7, "SS")
|
||||
self.SetCellValue(7, 0, "Larry")
|
||||
self.SetCellValue(7, 1, "Bowa")
|
||||
self.SetRowLabelValue(8, "P")
|
||||
self.SetCellValue(8, 0, "Rick")
|
||||
self.SetCellValue(8, 1, "Sutcliffe")
|
||||
|
||||
class TestFrame(wx.Frame):
|
||||
def __init__(self, parent):
|
||||
wx.Frame.__init__(self, parent, -1, "A Grid",
|
||||
size=(275, 275))
|
||||
grid = SimpleGrid(self)
|
||||
|
||||
if __name__ == '__main__':
|
||||
app = wx.PySimpleApp()
|
||||
frame = TestFrame(None)
|
||||
frame.Show(True)
|
||||
app.MainLoop()
|
||||
|
41
wxPython/samples/wxPIA_book/Chapter-05/lineuptable.py
Normal file
41
wxPython/samples/wxPIA_book/Chapter-05/lineuptable.py
Normal file
@@ -0,0 +1,41 @@
|
||||
import wx
|
||||
import wx.grid
|
||||
|
||||
class LineupEntry:
|
||||
|
||||
def __init__(self, pos, first, last):
|
||||
self.pos = pos
|
||||
self.first = first
|
||||
self.last = last
|
||||
|
||||
class LineupTable(wx.grid.PyGridTableBase):
|
||||
|
||||
colLabels = ("First", "Last")
|
||||
colAttrs = ("first", "last")
|
||||
|
||||
def __init__(self, entries):
|
||||
wx.grid.PyGridTableBase.__init__(self)
|
||||
self.entries = entries
|
||||
|
||||
def GetNumberRows(self):
|
||||
return len(self.entries)
|
||||
|
||||
def GetNumberCols(self):
|
||||
return 2
|
||||
|
||||
def GetColLabelValue(self, col):
|
||||
return self.colLabels[col]
|
||||
|
||||
def GetRowLabelValue(self, col):
|
||||
return self.entries[row].pos
|
||||
|
||||
def IsEmptyCell(self, row, col):
|
||||
return False
|
||||
|
||||
def GetValue(self, row, col):
|
||||
entry = self.entries[row]
|
||||
return getattr(entry, self.colAttrs[col])
|
||||
|
||||
def SetValue(self, row, col, value):
|
||||
pass
|
||||
|
89
wxPython/samples/wxPIA_book/Chapter-05/modelExample.py
Normal file
89
wxPython/samples/wxPIA_book/Chapter-05/modelExample.py
Normal file
@@ -0,0 +1,89 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import wx
|
||||
import abstractmodel
|
||||
|
||||
class SimpleName(abstractmodel.AbstractModel):
|
||||
|
||||
def __init__(self, first="", last=""):
|
||||
abstractmodel.AbstractModel.__init__(self)
|
||||
self.set(first, last)
|
||||
|
||||
def set(self, first, last):
|
||||
self.first = first
|
||||
self.last = last
|
||||
self.update()
|
||||
|
||||
class ModelExample(wx.Frame):
|
||||
|
||||
def __init__(self, parent, id):
|
||||
wx.Frame.__init__(self, parent, id, 'Flintstones',
|
||||
size=(340, 200))
|
||||
panel = wx.Panel(self)
|
||||
panel.SetBackgroundColour("White")
|
||||
self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
|
||||
self.textFields = {}
|
||||
self.createTextFields(panel)
|
||||
self.model = SimpleName()
|
||||
self.model.addListener(self.OnUpdate)
|
||||
self.createButtonBar(panel)
|
||||
|
||||
def buttonData(self):
|
||||
return (("Fredify", self.OnFred),
|
||||
("Wilmafy", self.OnWilma),
|
||||
("Barnify", self.OnBarney),
|
||||
("Bettify", self.OnBetty))
|
||||
|
||||
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])
|
||||
self.textFields[label] = wx.TextCtrl(panel, wx.NewId(),
|
||||
"", size=(100, -1), pos=textPos,
|
||||
style=wx.TE_READONLY)
|
||||
|
||||
def OnUpdate(self, model):
|
||||
self.textFields["First Name"].SetValue(model.first)
|
||||
self.textFields["Last Name"].SetValue(model.last)
|
||||
|
||||
def OnFred(self, event):
|
||||
self.model.set("Fred", "Flintstone")
|
||||
|
||||
def OnBarney(self, event):
|
||||
self.model.set("Barney", "Rubble")
|
||||
|
||||
def OnWilma(self, event):
|
||||
self.model.set("Wilma", "Flintstone")
|
||||
|
||||
def OnBetty(self, event):
|
||||
self.model.set("Betty", "Rubble")
|
||||
|
||||
def OnCloseWindow(self, event):
|
||||
self.Destroy()
|
||||
|
||||
if __name__ == '__main__':
|
||||
app = wx.PySimpleApp()
|
||||
frame = ModelExample(parent=None, id=-1)
|
||||
frame.Show()
|
||||
app.MainLoop()
|
||||
|
37
wxPython/samples/wxPIA_book/Chapter-05/testEventExample.py
Normal file
37
wxPython/samples/wxPIA_book/Chapter-05/testEventExample.py
Normal file
@@ -0,0 +1,37 @@
|
||||
import unittest
|
||||
import modelExample
|
||||
import wx
|
||||
|
||||
class TestExample(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.app = wx.PySimpleApp()
|
||||
self.frame = modelExample.ModelExample(parent=None, id=-1)
|
||||
|
||||
def tearDown(self):
|
||||
self.frame.Destroy()
|
||||
|
||||
def testModel(self):
|
||||
self.frame.OnBarney(None)
|
||||
self.assertEqual("Barney", self.frame.model.first,
|
||||
msg="First is wrong")
|
||||
self.assertEqual("Rubble", self.frame.model.last)
|
||||
|
||||
def testEvent(self):
|
||||
panel = self.frame.GetChildren()[0]
|
||||
for each in panel.GetChildren():
|
||||
if each.GetLabel() == "Wilmafy":
|
||||
wilma = each
|
||||
break
|
||||
event = wx.CommandEvent(wx.wxEVT_COMMAND_BUTTON_CLICKED, wilma.GetId())
|
||||
wilma.GetEventHandler().ProcessEvent(event)
|
||||
self.assertEqual("Wilma", self.frame.model.first)
|
||||
self.assertEqual("Flintstone", self.frame.model.last)
|
||||
|
||||
def suite():
|
||||
suite = unittest.makeSuite(TestExample, 'test')
|
||||
return suite
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main(defaultTest='suite')
|
||||
|
26
wxPython/samples/wxPIA_book/Chapter-05/testExample.py
Normal file
26
wxPython/samples/wxPIA_book/Chapter-05/testExample.py
Normal file
@@ -0,0 +1,26 @@
|
||||
import unittest
|
||||
import modelExample
|
||||
import wx
|
||||
|
||||
class TestExample(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.app = wx.PySimpleApp()
|
||||
self.frame = modelExample.ModelExample(parent=None, id=-1)
|
||||
|
||||
def tearDown(self):
|
||||
self.frame.Destroy()
|
||||
|
||||
def testModel(self):
|
||||
self.frame.OnBarney(None)
|
||||
self.assertEqual("Barney", self.frame.model.first,
|
||||
msg="First is wrong")
|
||||
self.assertEqual("Rubble", self.frame.model.last)
|
||||
|
||||
def suite():
|
||||
suite = unittest.makeSuite(TestExample, 'test')
|
||||
return suite
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main(defaultTest='suite')
|
||||
|
Reference in New Issue
Block a user