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