En el código que tú resolviste:
Código Python:
Ver originalclass RadioButtonFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, 'User Admin', size=(200, 200))
self.Bind(wx.EVT_CLOSE, self.OnClose)
panel = wx.Panel(self, -1)
self.widgets = []
self.users = get_users()
for i, user in enumerate(self.users):
radio = wx.RadioButton(panel, -1, label=str(i+1), pos=(20, 50+(i*30)))
text = wx.TextCtrl(panel, -1, user.name, pos=(80, 50+(i*30)))
text.Enable(False)
if user.is_active():
radio.SetValue(True)
text.Enable(True)
def OnButton(event, radio_index=i):
self.OnRadio(event, radio_index)
radio.Bind(wx.EVT_RADIOBUTTON, OnButton)
widget = {'radio': radio, 'text': text}
self.widgets.append(widget)
def OnRadio(self, event, index):
for widget in self.widgets:
widget['text'].Enable(False)
widget = self.widgets[index]
widget['text'].Enable(True)
def OnClose(self, event):
dlg = wx.MessageDialog(self, "Guardar los cambios realizados?", "Confirmar Salida", wx.OK|wx.CANCEL|wx.ICON_QUESTION)
result = dlg.ShowModal()
dlg.Destroy()
if result == wx.ID_OK:
for user, widget in zip(self.users, self.widgets):
user.set_active(widget['radio'].GetValue())
user.name = widget['text'].GetValue()
save_users(self.users)
self.Destroy()
La duda que tengo es que esa clase incluye partes que podrían pertenecer a "CONTROLADOR" (def OnRadio y def OnClose) y otras que podrían pertenecer a "VISTAS" (def __init__)
En ese caso me complica un poco más como separarlas para que estén en sus respectivas áreas.
Incluyo el def __init__ en VISTAS y luego en CONTROLERS extiendo la clase para incluir def OnRadio y def OnClose?