wxPrintout and wxPrinter problem

I'm new to this list. Please let me know if this question belongs in
another mailing list. Thanks in advance. I'm writing a light cash
register in wxPython. I copied my printing code fairly directly from the
wxPython demo, but it prints a blank page and printer.Print returns
false. Is there something obviously wrong? I'd appreciate any help.
Thanks
Chris Goughnour

class wxFrame1(wxFrame):
  ...
  def __init__(self, parent):
        self._init_ctrls(parent)
    self.purchases = []
    self.readTax()
    self.readOrderNo()
    self.printData = wxPrintData()
    self.printData.SetPaperId(wxPAPER_LETTER)
  ...
  def OnPrint(self,event):
        if(len(self.purchases)==0):
              return
          #print receipt
    pdd = wxPrintDialogData()
    pdd.SetPrintData(self.printData)
    printer = wxPrinter(pdd)
    printout = MyPrintout(self)
    if not printer.Print(self,printout):
      wxMessageBox("There was a printing
problem.","Print Error",wxOK)
      printout.Destroy()
      return
    self.printData =
printer.GetPrintDialogData().GetPrintData()
    printout.Destroy()
          self.writeTransaction()
          self.OnClear(None)
...
class MyPrintout(wxPrintout):
  def __init__(self,register):
    wxPrintout.__init__(self)
    self.register = register

  def OnBeginDocument(self,start,end):
    return self.base_OnBeginDocument(start,end)

  def OnEndDocument(self):
    return self.base_OnEndDocument()

  def OnBeginPrinting(self):
    self.base_OnBeginPrinting()

  def OnEndPrinting(self):
    self.base_OnEndPrinting()

  def OnPreparePrinting(self):
    self.base_OnPreparePrinting()

  def HasPage(self,page):
    if page == 1:
      return True
    else:
      return False

  def GetPageInfo(self):
    return (1,1,1,1)

  def OnPagePrint(self,page):
    dc = self.GetDC()
    dc.BeginDrawing()
    dc.SetFont(wxFont(12,wxSWISS,wxNORMAL,wxNORMAL))
    dc.SetTextForeground(wxColour(0x00,0x00,0x00))
    y = 20
    dc.DrawText("Order Number: %d" % register.orderNo,60,y)
    y = y+20
    for purchase in self.register.purchases:
      dc.DrawText("%s %s %f @ %f" %
(purchase[0],purchase[3],purchase[1],purchase[2]),40,y)
      y = y+20
    dc.EndDrawing()