wxFont: Como ajustar el tamaño para impresora

Amm-Python python en ammsoft.com
Dom Ene 9 18:57:46 CET 2005


Llevo ya tres días con el tema y no me aclaro.
Estoy intentando imprimir en una impresora con wxPython.
En principio todo iba bien hasta que he intentado ajustar el tamaño de
las fuentes.
Las muestra muy pequeñas.
Supongo que me estoy liando con el wxFont, o que debo controlar la
resolución de la impresora y no se cómo, pero no consigo ajustar el
tamaño.
 
Alguien tiene un ejemplo claro y sencillo?  Los del Wiki de Wxpython me
han liado más y las fuentes salen enooooooormes.
 
Aquí adjunto el código con el que estoy jugando. Utilizo Python 2.3. y
wxPython 2.4.2.4 en W$ XP
La impresora con la que hago las pruebas es una HP 930C.
 
from wxPython.wx import *
import wx
 
class MyPrintout(wxPrintout):
    def OnPrintPage(self, page):
        dc = self.GetDC()
        dc.BeginDrawing()
        dc.SetMapMode(wxMM_TEXT)
        #dc.SetMapMode(wxMM_LOMETRIC)
        #dc.SetMapMode(wxMM_METRIC)
        #dc.SetMapMode(wxMM_POINTS)
        #dc.SetMapMode(wxMM_TWIPS)

        s = 'abcdefghijklmnopqrstuvwxyz'
        for i in range(5, 25):
            posx, posy = 0, (i-5) * 30
            #facename = 'Courier New'
            #facename = 'Lucida Console'
            facename = 'Arial'
            #facename = 'Courier'
            dc.SetFont(wxFont(i, wxMODERN, wxNORMAL, wxNORMAL,
                              false,facename))
            fte = dc.GetFullTextExtent(s)
            dc.DrawText(str(i) + ' ' + s + '  ' + str(fte), posx, posy)
 
        dc.EndDrawing()
        return true
 
class MyPanel(wxPanel):
 
    def __init__(self, parent, id):
        wxPanel.__init__(self, parent, id, wxDefaultPosition,
wxDefaultSize)
        self.parent = parent
 
        #crea los botones de control de la aplicación        
        b1 = wxButton(self, 1003, "Impresión", wxPoint(20, 70),
wxDefaultSize)
        EVT_BUTTON(self, 1003, self.OnPrint)
 
    def OnPrint(self, event):
        printer = wxPrinter()
        printout = MyPrintout()
        printer.Print(self, printout)  # self is the parent window
        printout.Destroy()
 
class MyFrame(wxFrame):
    def __init__(self, parent, id):
        wxFrame.__init__(self, parent, id, "Ejemplo Impresión",
                         wxPoint(0, 0),wxSize(800, 600))
        panel = MyPanel(self, -1)
        EVT_CLOSE(self, self.OnCloseWindow)
        
    def OnCloseWindow(self, event):
        self.Destroy()
 
class MyApp(wxApp):
    def OnInit(self):
        #muestra frame
        wxInitAllImageHandlers()
        frame = MyFrame(NULL, -1)
        frame.Show(true)
        self.SetTopWindow(frame)
        return true
#-------------------------------------------------------------------
def main():
    app = MyApp(0)
    app.MainLoop()
 
if __name__ == "__main__" :
    main()

 




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