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()