Hello pythonists.
Me been a nub cant solve this simple problem.
I got a frame where i have constructed a panel, in it i made a list of
control texts where the user can insert their data, then pressing the
"grabar" button a dialog box pops and pressing "Ok" the data is saved.
Well my problem is that as the controltexts are on the panel and the
dialog box is constructed with None (cant be constructed from a Panel
as far as i know) it cant get the Panel data saved i keep getting the
error that it cant recognize the variables.
I attach the Frame code.
Any suggestions? any workarounds? Tricks?
Many thanks and greetings from Canary Islands.
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
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', entranombre.value())
cambia_attrib('usuario', 'primerapellido',
entraprimerapellido.value)
cambia_attrib('usuario', 'segundoapellido',
entrasegundoapellido.value)
cambia_attrib('usuario', 'dni', entradni.value)
cambia_attrib('usuario', 'direccion',
entradireccion.value)
cambia_attrib('usuario', 'restodireccion',
entrarestodireccion.value)
cambia_attrib('usuario', 'codigopostal',
entracodigopostal.value)
cambia_attrib('usuario', 'poblacion',
entrapoblacion.value)
cambia_attrib('usuario', 'email', entraemail.value)
cambia_attrib('usuario', 'telefono1', entratf1.value)
cambia_attrib('usuario', 'telefono2', entratf2.value)
self.Destroy()
else:
print 'Cancelado'
dialogo.Destroy()
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx