Ver Mensaje Individual
  #5 (permalink)  
Antiguo 28/12/2012, 10:39
Avatar de razpeitia
razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: wxPython - Seleccionar una opción RadioBox y al mismo tiempo poder editar

Hay muchas cosas que están mal!

1.- Nunca estas definiendo variables globales! (No voy a discutir sobre lo malo que es usar variables globales)
2.- Incluso si los estas definiendo, nunca vas a poder poner valores de esa forma.
3.- Usar variables como usuario1, usuario2, .... usuarioN es dañino en muchos aspectos.
4.- CambiaTexto nunca es llamada y que bueno por que no tiene sentido.

Código Python:
Ver original
  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3.  
  4. import sqlite3 as lite
  5. import sys
  6. import wx
  7.  
  8. #defino variables globales
  9. usuario1 = ""
  10. usuario2 = ""
  11. usuario3 = ""
  12. usuario4 = ""
  13. usuario5 = ""
  14.  
  15. def LeoUsuarios():
  16.     # Necesario para asignar valores
  17.     global usuario1
  18.     global usuario2
  19.     global usuario3
  20.     global usuario4
  21.     global usuario5
  22.  
  23.     con = lite.connect('usuarios.db')
  24.     listausuarios = []
  25.    
  26.     with con:
  27.    
  28.         cur = con.cursor()    
  29.         cur.execute("SELECT * FROM Usuarios")
  30.  
  31.  
  32.         while True:
  33.      
  34.             row = cur.fetchone()
  35.            
  36.            
  37.        
  38.             if row == None:
  39.                 break
  40.  
  41.             print "IMPRIMO LOS TRES CAMPOS PARA VERIFICAR QUE FUERON LEIDOS"
  42.             print row[0], row[1], row[2]
  43.            
  44.             #agrego a la lista el nombre del usuario
  45.             listausuarios.append(row[1])
  46.             #print listausuarios
  47.  
  48.  
  49.     #asigno cada item de la lista a una variable independiente para conservar los valores una vez que salgo del DEF
  50.     usuario1 = listausuarios[0]
  51.     usuario2 = listausuarios[1]
  52.     usuario3 = listausuarios[2]
  53.     usuario4 = listausuarios[3]
  54.     usuario5 = listausuarios[4]
  55.  
  56.     #imprimo las variables para ver si va todo bien
  57.     print usuario1
  58.     print usuario2
  59.     print usuario3
  60.     print usuario4
  61.     print usuario5
  62.  
  63.  
  64.     print "ANTES DE SALIR EL VALOR DE USUARIO 1 ES ", usuario1
  65.     #retorno los datos de usuarios leídos
  66.     return (usuario1, usuario2, usuario3, usuario4, usuario5)
  67.  
  68.  
  69.  
  70.  
  71.  
  72. class RadioButtonFrame(wx.Frame):
  73.     def __init__(self):
  74.         print "ESTOY DENTRO DE LA SEGUNDA FUNCION Y USUARIO 1 ES"
  75.         print usuario1
  76.         wx.Frame.__init__(self, None, -1, 'Radio Example',
  77.                 size=(200, 200))
  78.         panel = wx.Panel(self, -1)
  79.         radio1 = wx.RadioButton(panel, -1, "1", pos=(20, 50), style=wx.RB_GROUP)
  80.         radio2 = wx.RadioButton(panel, -1, "2", pos=(20, 80))
  81.         radio3 = wx.RadioButton(panel, -1, "3", pos=(20, 110))
  82.         radio4 = wx.RadioButton(panel, -1, "4", pos=(20, 140))
  83.         radio5 = wx.RadioButton(panel, -1, "5", pos=(20, 170))
  84.         text1 = wx.TextCtrl(panel, -1, usuario1, pos=(80, 50))
  85.         text2 = wx.TextCtrl(panel, -1, usuario2, pos=(80, 80))
  86.         text3 = wx.TextCtrl(panel, -1, usuario3, pos=(80, 110))
  87.         text4 = wx.TextCtrl(panel, -1, usuario4, pos=(80, 140))
  88.         text5 = wx.TextCtrl(panel, -1, usuario5, pos=(80, 170))
  89.         self.texts = {"1": text1, "2": text2, "3": text3, "4": text4, "5": text5}
  90.         for eachText in [text2, text3, text4, text5]:
  91.             eachText.Enable(False)
  92.         for eachRadio in [radio1, radio2, radio3, radio4, radio5]:
  93.             self.Bind(wx.EVT_RADIOBUTTON, self.OnRadio, eachRadio)
  94.         self.selectedText = text1
  95.  
  96.  
  97.     def OnRadio(self, event):
  98.         if self.selectedText:
  99.             self.selectedText.Enable(False)
  100.         radioSelected = event.GetEventObject()
  101.         text = self.texts[radioSelected.GetLabel()]
  102.         text.Enable(True)
  103.         self.selectedText = text
  104.  
  105.     def CambiaTexto(self, event):
  106.         EVT_TEXT(id, func)
  107.  
  108. if __name__ == '__main__':
  109.     app = wx.PySimpleApp()
  110.     LeoUsuarios()
  111.     print "PERO APENAS SALGO EL VALOR DE USUARIO1 ES"
  112.     print usuario1
  113.     RadioButtonFrame().Show()
  114.     app.MainLoop()