[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