[Python-es] [wx.python]

monoBOT monobot.soft en gmail.com
Lun Mar 29 14:54:08 CEST 2010


estoy creando un programilla con wx.python, en un panel he puesto una serie
de textos (ctrltext) que el usuario podrá llenar.

Luego con el boton de guardar sale un mensaje de diálogo que permite al
usuario guardar o salir, mi problema es que como los textos están en el
panel y el diálogo lo monto con None las variables de los textos no me las
coge y no se como puedo cogerlas.

 y si les pones self delante dice que el marco no tiene variables con ese
nombre.

como se soluciona?
hay algún atajo?
-- 
monobotblog.alvarezalonso.es
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20100329/71296902/attachment.html>
------------ próxima parte ------------

        
class VentanaUsuario(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, wx.GetApp().TopWindow, -1, 'Datos de usuario', pos=(50,50), size=(800,600))

        #creando el ventana
        ventana = wx.Panel(self)
        #ventana.SetBackgroundColour('DarkRed')
        ventana.Show=(True)
        ventana.SetScrollbar(wx.VERTICAL, 0, 10, 20);
        
        #creando botones
        botongrabar = wx.Button(ventana, -1, 'Grabar datos', size=(150,50))
        self.Bind(wx.EVT_BUTTON, self.grabar, botongrabar)
        #metemos los textos
        
        ## xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
        ## recopilamos la informacion del archivo xml
        nombre_en_fichero = busqueda_xml ('usuario', 'nombre')
        primerapellido_en_fichero = busqueda_xml ('usuario', 'primerapellido')
        segundoapellido_en_fichero = busqueda_xml ('usuario', 'segundoapellido')
        dni_en_fichero = busqueda_xml ('usuario', 'dni')
        direccion_en_fichero = busqueda_xml ('usuario', 'direccion')
        restodireccion_en_fichero = busqueda_xml ('usuario', 'restodireccion')
        codigopostal_en_fichero = busqueda_xml ('usuario', 'codigopostal')
        poblacion_en_fichero = busqueda_xml ('usuario', 'poblacion')
        email_en_fichero = busqueda_xml ('usuario', 'email')
        telefono1_en_fichero = busqueda_xml ('usuario', 'telefono1')
        telefono2_en_fichero = busqueda_xml ('usuario', 'telefono2')
        ## xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
        
        #datos generales
##        fuentemenus = wx.Font(22, wx.MODERN, wx.BOLD, wx.NORMAL)
        titulo1 = wx.StaticText(ventana, -1, "Datos de contacto")
##        titulo1.SetFont(fuentemenus)
        txtnombre =wx.StaticText(ventana, -1, "Nombre del profesional")
        entranombre = wx.TextCtrl(ventana, -1, nombre_en_fichero)
        txtapellido1 =wx.StaticText(ventana, -1, "Primer Apellido")
        entraapellido1 = wx.TextCtrl(ventana, -1, primerapellido_en_fichero)
        txtapellido2 =wx.StaticText(ventana, -1, "Segundo Apellido")
        entraapellido2 = wx.TextCtrl(ventana, -1, segundoapellido_en_fichero)
        txtdni = wx.StaticText(ventana, -1, "D.N.I.")
        entradni = wx.TextCtrl(ventana, -1, dni_en_fichero)
        txtdirec = wx.StaticText(ventana, -1, "Dirección")
        entradirec = wx.TextCtrl(ventana, -1, direccion_en_fichero)
        entrarestodirec = wx.TextCtrl(ventana, -1, restodireccion_en_fichero)
        txtpost = wx.StaticText(ventana, -1, "Código Postal")
        entrapost = wx.TextCtrl(ventana, -1, codigopostal_en_fichero)
        txtpobl = wx.StaticText(ventana, -1, "Población")
        entrapobl = wx.TextCtrl(ventana, -1, poblacion_en_fichero)
        txtprov = wx.StaticText(ventana, -1, "Provincia")
        entraprov = wx.Choice(ventana, -1, choices = provincias)
        txtemail = wx.StaticText(ventana, -1, "Correo Electrónico")
        entraemail = wx.TextCtrl(ventana, -1, email_en_fichero)
        txttf1 = wx.StaticText(ventana, -1, "Teléfono")
        entratf1 = wx.TextCtrl(ventana, -1, telefono1_en_fichero)
        txttf2 = wx.StaticText(ventana, -1, "Otro Teléfono")
        entratf2 = wx.TextCtrl(ventana, -1, telefono2_en_fichero)
        
        #Datos de colegiación
        titulo2 = wx.StaticText(ventana, -1, "Datos de colegiación")
##        titulo2.SetFont(fuentemenus)
        txtcolegio = wx.StaticText(ventana, -1, "Lugar de Colegiación")
        entracolegio = wx.Choice(ventana, -1, choices = colegios)
        txtnumcol = wx.StaticText(ventana, -1, "Colegiado")
        entranumcol = wx.TextCtrl(ventana, -1, "11111")

        ##SIZERS
        # sizer general
        sizerpral = wx.BoxSizer(wx.VERTICAL)

        # sizer 2 columnas        
        sizer2col = wx.FlexGridSizer( cols=2, hgap=15, vgap=5)
        sizer2col.AddGrowableCol(1)
        
        muestralogo=wx.StaticBitmap(ventana, -1, wx.BitmapFromImage(wx.Image('./icons/logo.png', wx.BITMAP_TYPE_ANY)))
        sizer2col.Add(muestralogo)
        sizer2col.Add(titulo1, 0, wx.ALIGN_LEFT|wx.ALIGN_CENTER_VERTICAL)

        
        # sizer horizontal 1
        sizerhor1 = wx.BoxSizer(wx.HORIZONTAL)
        sizer2col.Add(txtnombre, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
        sizerhor1.Add(entranombre, 1, wx.EXPAND)        
        sizerhor1.Add(txtapellido1, 0, wx.LEFT|wx.RIGHT|wx.ALIGN_CENTER_VERTICAL, 5)
        sizerhor1.Add(entraapellido1, 0, wx.EXPAND)
        sizerhor1.Add(txtapellido2, 0, wx.LEFT|wx.RIGHT|wx.ALIGN_CENTER_VERTICAL, 5)
        sizerhor1.Add(entraapellido2, 1, wx.EXPAND)
        sizer2col.Add(sizerhor1, 0, wx.EXPAND)

        
        sizer2col.Add(txtdni, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
        sizer2col.Add(entradni, 0, wx.EXPAND)
        sizer2col.Add(txtdirec, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
        sizer2col.Add(entradirec, 0, wx.EXPAND)
        sizer2col.Add((10,10))
        sizer2col.Add(entrarestodirec, 0, wx.EXPAND)

        #sizer horizontal 2
        sizerhor2 = wx.BoxSizer(wx.HORIZONTAL)
        sizer2col.Add(txtpobl, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
        sizerhor2.Add(entrapobl, 1, wx.EXPAND)        
        sizerhor2.Add(txtpost, 0, wx.LEFT|wx.RIGHT|wx.ALIGN_CENTER_VERTICAL, 5)
        sizerhor2.Add(entrapost, 0, wx.EXPAND)
        sizerhor2.Add(txtprov, 0, wx.LEFT|wx.RIGHT|wx.ALIGN_CENTER_VERTICAL, 5)
        sizerhor2.Add(entraprov, 1, wx.EXPAND)
        
        sizer2col.Add(sizerhor2, 0, wx.EXPAND)

        #sizer horizontal 3
        sizerhor3 = wx.BoxSizer(wx.HORIZONTAL)
        sizer2col.Add(txtemail, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
        sizerhor3.Add(entraemail, 1, wx.EXPAND)        
        sizerhor3.Add(txttf1, 0, wx.LEFT|wx.RIGHT|wx.ALIGN_CENTER_VERTICAL, 5)
        sizerhor3.Add(entratf1, 0, wx.EXPAND)
        sizerhor3.Add(txttf2, 0, wx.LEFT|wx.RIGHT|wx.ALIGN_CENTER_VERTICAL, 5)
        sizerhor3.Add(entratf2, 1, wx.EXPAND)
        sizer2col.Add(sizerhor3, 0, wx.EXPAND)

        sizer2col.Add((10,10))
        sizer2col.Add((10,10))
        sizer2col.Add((10,10))
        sizer2col.Add(wx.StaticLine(ventana), 15, wx.EXPAND|wx.TOP|wx.BOTTOM, 5)

        sizer2col.Add((10,10))        
        sizer2col.Add(titulo2, 0, wx.ALIGN_LEFT|wx.ALIGN_CENTER_VERTICAL)

        sizer2col.Add(txtcolegio, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
        sizer2col.Add(entracolegio, 0, wx.EXPAND)
        sizer2col.Add(txtnumcol, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
        sizer2col.Add(entranumcol, 0, wx.EXPAND)

        #sizer botonera
        sizerbot=wx.BoxSizer(wx.HORIZONTAL)
        sizer2col.Add((10,10))
        sizer2col.Add((10,10))
        sizer2col.Add((10,50))
        sizerbot.Add((10,10),wx.EXPAND)
        sizerbot.Add(botongrabar)
        #añadimos el sizer botonera al flexible
        sizer2col.Add(sizerbot, 0, wx.EXPAND|wx.BOTTOM, 10)

        # añadimos el flexible en el general
        sizerpral.Add(sizer2col, 0, wx.EXPAND|wx.ALL, 10)

        # ponemos sizer al panel
        ventana.SetSizer(sizerpral)
        # y al marco, junto con tamaño mínimo
        sizer = wx.BoxSizer()
        sizer.Add(ventana, 1, wx.EXPAND)
        self.SetMinSize((800,600))
        #self.SetMaxSize((800,900))

    def grabar(self,event):
        dialogo=wx.MessageDialog(None, '¿Desea Grabar y Salir?', 'Atención', wx.YES_NO|wx.ICON_QUESTION|wx.STAY_ON_TOP)
        respuesta=dialogo.ShowModal()
        if (respuesta ==wx.ID_YES):
            cambia_attrib('usuario', 'nombre', self.ventana.entranombre.GetValue())
            cambia_attrib('usuario', 'primerapellido', self.entraprimerapellido.Value)
            cambia_attrib('usuario', 'segundoapellido', self.entrasegundoapellido.Value)
            cambia_attrib('usuario', 'dni', self.entradni.Value)
            cambia_attrib('usuario', 'direccion', self.entradireccion.Value)
            cambia_attrib('usuario', 'restodireccion', self.entrarestodireccion.Value)
            cambia_attrib('usuario', 'codigopostal', self.entracodigopostal.Value)
            cambia_attrib('usuario', 'poblacion', self.entrapoblacion.Value)
            cambia_attrib('usuario', 'email', self.entraemail.Value)
            cambia_attrib('usuario', 'telefono1', self.entratf1.Value)
            cambia_attrib('usuario', 'telefono2', self.entratf2.Value)

            
            self.Destroy()
        else:
            print 'Cancelado'
            dialogo.Destroy()


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