problemas con wxpython

Alvaro Abraham Colunga Rodriguez drg_alvaro en yahoo.com
Lun Ago 16 23:51:10 CEST 2004


class MyPrintout(wxPrintout):
	def __init__(self, frame,datos,lista):
		wxPrintout.__init__(self)
		self.frame = frame
		self.pages = 1
		self.datos=datos
		self.lista=lista

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

	def OnEndDocument(self):
		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 < self.pages:
			return true
        #else:
        #    return false

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

	def OnPrintPage(self, page):
		dc = self.GetDC()


		x= 25
		y=15
		if not self.IsPreview():
			y *=4
      #-------------------------------------------
		line_count = 1
		for item in self.datos:
			dc.DrawText(item, x, y*line_count)
			line_count+=1

		
		for i in self.lista:
			x2=25
			for item in i:
				dc.DrawText(item, x2, y*line_count)
				x2*=2
			line_count+=1

		
		return true


class Imprime(wxFrame):
	def __init__(self,ID,parent):
	
		wxFrame.__init__(self,ID,parent,"Impresion")
		panel=wxPanel(self,-1,style=wxTAB_TRAVERSAL)

		ID_PRN_PRN=wxNewId()
		ID_PRN_PRV=wxNewId()
		ID_PRN_CFG=wxNewId()
		ID_AGREGA=wxNewId()
		ID_PRN_PDF=wxNewId()

		ID_EXIT=wxNewId()
		self.menuArchivo = wxMenu()
		#agrega una opcion al menu
		self.menuArchivo.Append(ID_AGREGA,
"A&gregar\tF2","Agrega elementos")
		self.menuArchivo.Append(ID_PRN_PRN, "Imprimir")
		self.menuArchivo.Append(ID_PRN_CFG, "Configurar
impresion")
		self.menuArchivo.Append(ID_PRN_PRV, "Vista
preliminar")
		self.menuArchivo.Append(ID_PRN_PDF, "Crear PDF")
		self.menuArchivo.AppendSeparator()
		self.menuArchivo.Append(ID_EXIT, "&Salir\tF10",
"Salir del programa")
		
		EVT_MENU(self,ID_PRN_PRN,self.OnDoPrint)
		EVT_MENU(self,ID_PRN_PRV,self.OnPrintPreview)
		EVT_MENU(self,ID_PRN_CFG,self.OnPrintSetup)
		EVT_MENU(self,ID_PRN_PDF,self.OnPrintPDF)
		EVT_MENU(self,ID_AGREGA,self.OnAgregar)

		menuBar = wxMenuBar()
		#agrega el menu a la barra de menu
		menuBar.Append(self.menuArchivo, "&Archivo")

		#establece como barra de menu el que se creo
		self.SetMenuBar(menuBar)

		EVT_MENU(self, ID_EXIT,  self.OnArchivoSalir)

		label1=wxStaticText(panel,-1,"Numero de cliente")
		label2=wxStaticText(panel,-1,"Fecha")
			
self.textocliente=wxTextCtrl(panel,-1,"",size=wxSize(200,100),style=wxTE_MULTILINE|wxTE_READONLY)

		ID_TEXT_ENTER=wxNewId()
	
self.txt1=wxTextCtrl(panel,ID_TEXT_ENTER,"",size=(200,-1),style=wxTE_PROCESS_ENTER,validator=TextValidator())
	
self.txt2=wxTextCtrl(panel,-1,"",validator=TextValidator())
		EVT_TEXT_ENTER(self,ID_TEXT_ENTER,self.OnTextEnter)

		fe=date
	
fecha=str(fe.today().day)+'/'+str(fe.today().month)+'/'+str(fe.today().year)
		self.txt2.SetValue(fecha)

		ID_LISTA=wxNewId()
	
self.lista=MyList2(panel,ID_LISTA,wxDefaultPosition,wxSize(640,280),wxLC_REPORT)

		self.lista.InsertColumn(0,"Cantidad")
		self.lista.InsertColumn(1,"Concepto")
		self.lista.InsertColumn(2,"Precio unitario")
		self.lista.InsertColumn(3,"Subtotal")

		box1=wxBoxSizer(wxHORIZONTAL)
		box1.Add(label1,0)
		box1.Add(self.txt1,0)
		box1.Add(label2,0)
		box1.Add(self.txt2,0)

				
		sizer=wxBoxSizer(wxVERTICAL)
		sizer.Add(box1,0,wxALIGN_CENTER_HORIZONTAL|wxALL,5)
	
sizer.Add(self.textocliente,0,wxALIGN_CENTER_HORIZONTAL|wxEXPAND,5)
	
sizer.Add(self.lista,0,wxALIGN_CENTER_HORIZONTAL|wxEXPAND,5)

		panel.SetSizer(sizer)
		panel.SetAutoLayout(True)
		sizer.Fit(self)

		self.printData = wxPrintData()
		self.printData.SetPaperId(wxPAPER_LETTER)
		self.frame=self
#------------------------------------------------------
	def OnPrintSetup(self, event):
		printerDialog = wx.wxPrintDialog(self)
	
printerDialog.GetPrintDialogData().SetPrintData(self.printData)
	
printerDialog.GetPrintDialogData().SetSetupDialog(wx.true)
		printerDialog.ShowModal();
		self.printData =
printerDialog.GetPrintDialogData().GetPrintData()
		printerDialog.Destroy()
#------------------------------------------------------
	def OnPrintPreview(self, event):
		datos=self.textocliente.GetValue().split("\n")
		cant=self.lista.GetItemCount()
		lista=[]
		for num in range(cant):
			t1=self.lista.GetItemText(num)
			t2=self.lista.GetItem(num,1).GetText()
			t3=self.lista.GetItem(num,2).GetText()
			t4=self.lista.GetItem(num,3).GetText()
			lista.append([t1,t2,t3,t4])

		printout = MyPrintout(self,datos,lista)
		printout2 = MyPrintout(self,datos,lista)
		self.preview = wxPrintPreview(printout, printout2,
self.printData)
		if not self.preview.Ok():
			return

		frame = wxPreviewFrame(self.preview, self.frame,
"Vista preliminar")

		frame.Initialize()
		frame.SetPosition(self.frame.GetPosition())
		frame.SetSize(self.frame.GetSize())
		frame.Show(True)
#------------------------------------------------------
	def OnDoPrint(self, event):
		datos=self.textocliente.GetValue().split("\n")
		cant=self.lista.GetItemCount()
		lista=[]
		for num in range(cant):
			t1=self.lista.GetItemText(num)
			t2=self.lista.GetItem(num,1).GetText()
			t3=self.lista.GetItem(num,2).GetText()
			t4=self.lista.GetItem(num,3).GetText()
			lista.append([t1,t2,t3,t4])
		
		pdd = wxPrintDialogData()
		pdd.SetPrintData(self.printData)
		printer = wxPrinter(pdd)
		printout = MyPrintout(self,datos,lista)
		if not printer.Print(self.frame,
printout,prompt=True):
			wxMessageBox("There was a problem
printing.\nPerhaps your current printer is not set
correctly?", "Printing", wxOK)
		else:
			self.printData =
printer.GetPrintDialogData().GetPrintData()
		printout.Destroy()


Tebgo las siguientes clases que puse al principio pero
no puedo imprimir, si me muestra la presentacion
peliminar pero cuando quiero imprimir no lo hace,
alguien nota algo raro o que falta o pueda ayudarme
con esto.

Gracias.

_________________________________________________________
Do You Yahoo!?
Información de Estados Unidos y América Latina, en Yahoo! Noticias.
Visítanos en http://noticias.espanol.yahoo.com




Más información sobre la lista de distribución Python-es