SOLUCIONADO!!! Re: AttributeError: queda instance has no attribute 'hijo'
Marcos Sánchez Provencio
rapto en arrakis.es
Dom Ago 22 09:06:50 CEST 2004
De hecho, creo que la norma recomendada es poner cuatro espacios y no
usar tabs.
El dom, 22-08-2004 a las 09:05, Ariel Nardelli escribió:
> Hola!!
>
> Ya que nadie contesta contesto solo :)
>
> El programa no tiene errores, sino que el problema esta en el wxglade
> que cuando genera el programa en python no pone los tabs como
> corresponde sino que pone espacios para hacer el ident y por lo tanto
> todo queda hecho un desastre y al agregar algo, algun comando o lo que
> sea toma cualquier cosa y da cualquier tipo de error...
>
> Por eso, hay que tomar por costumbre verificar si el ident esta correcto
> antes de volverse loco buscando soluciones.
>
> Ariel
>
>
> Ariel Nardelli escribió:
>
> > Hola.
> >
> > Aca estoy experimentando con wx.Python y me esta surgiendo un problema
> > que no le encuentro solucion y no logro darme cuenta cual puede ser el
> > problema...
> >
> > Con WxGlade hice una aplicacion con 2 frames, uno que llama el
> > segundo, el principal es el frame queda y el frame que se carga dentro
> > del principal es el frame hijo.
> >
> > Pero cuando lo ejecuto me da un error cuando me tiene que llamar a una
> > funcion que esta definida, el error es:
> >
> > Traceback (most recent call last):
> > File "/mnt/python/wxnar/queda.py", line 67, in ?
> > cinco = Mycinco(0)
> > File "/usr/lib/python2.3/site-packages/wxPython/wx.py", line 1951, in
> > __init__
> > _wxStart(self.OnInit)
> > File "/mnt/python/wxnar/queda.py", line 59, in OnInit
> > frame_1 = queda(None, -1, "")
> > File "/mnt/python/wxnar/queda.py", line 29, in __init__
> > EVT_MENU(self, 101 , self.hijo)
> > AttributeError: queda instance has no attribute 'hijo'
> >
> > Realmente estube mirando y no encuentro cual puede ser el error, es
> > evidente que estoy definiendo algo mal pero no encuentro..., si
> > alguien ve el error y me lo dice se lo voy a agradecer!!!
> >
> > Estoy en python2.3, con linux.
> >
> > Aca van los dos fuentes, pelados tal cual lo crea el wxglade...
> >
> > # generated by wxGlade 0.3.3 on Fri Aug 20 17:39:17 2004
> >
> > from wxPython.wx import *
> >
> > # begin wxGlade: dependencies
> > # end wxGlade
> >
> > class queda(wxFrame):
> > def __init__(self, *args, **kwds):
> > # begin wxGlade: queda.__init__
> > kwds["style"] = wxDEFAULT_FRAME_STYLE
> > wxFrame.__init__(self, *args, **kwds)
> > # Menu Bar
> > self.queda_menubar = wxMenuBar()
> > self.SetMenuBar(self.queda_menubar)
> > self.MenuPrueba = wxMenu()
> > self.MenuPrueba.Append(101, "MPrueba", "es una prueba",
> > wxITEM_NORMAL)
> > self.queda_menubar.Append(self.MenuPrueba, "Prueba")
> > self.Salir = wxMenu()
> > self.queda_menubar.Append(self.Salir, "Salir")
> > # Menu Bar end
> > self.queda_statusbar = self.CreateStatusBar(1, 0)
> >
> > self.__set_properties()
> > self.__do_layout()
> > # end wxGlade
> >
> > EVT_MENU(self, 101 , self.hijo) # Aca es donde me da el error!!!!
> >
> > def __set_properties(self):
> > # begin wxGlade: queda.__set_properties
> > self.SetTitle("Queda")
> > self.queda_statusbar.SetStatusWidths([-1])
> > # statusbar fields
> > queda_statusbar_fields = ["queda_statusbar"]
> > for i in range(len(queda_statusbar_fields)):
> >
> > self.queda_statusbar.SetStatusText(queda_statusbar_fields[i], i)
> > # end wxGlade
> >
> > def __do_layout(self):
> > # begin wxGlade: queda.__do_layout
> > self.Layout()
> > # end wxGlade
> >
> > def hijo(self, event):
> > from hijo import hijo
> > dialog = hijo(self, -1, "")
> > dialog.CentreOnParent()
> > dialog.ShowModal()
> > dialog.Destroy()
> > # end of class queda
> >
> >
> > class Mycinco(wxApp):
> > def OnInit(self):
> > wxInitAllImageHandlers()
> > frame_1 = queda(None, -1, "")
> > self.SetTopWindow(frame_1)
> > frame_1.Show(1)
> > return 1
> >
> > # end of class Mycinco
> >
> > if __name__ == "__main__":
> > cinco = Mycinco(0)
> > cinco.MainLoop()
> >
> >
> > Y la class donde esta el hijo es:
> >
> > from wxPython.wx import *
> >
> > # begin wxGlade: dependencies
> > # end wxGlade
> >
> > class hijo(wxMDIChildFrame):
> > def __init__(self, *args, **kwds):
> > # begin wxGlade: hijo.__init__
> > kwds["style"] = wxDEFAULT_FRAME_STYLE
> > wxMDIChildFrame.__init__(self, *args, **kwds)
> > self.label_1 = wxStaticText(self, -1, "label_1")
> > self.label_2 = wxStaticText(self, -1, "label_2")
> > self.combo_box_1 = wxComboBox(self, -1, choices=[],
> > style=wxCB_DROPDOWN|wxCB_READONLY|wxCB_SORT)
> > self.label_3 = wxStaticText(self, -1, "label_3")
> > self.text_ctrl_1 = wxTextCtrl(self, -1, "")
> > self.button_1 = wxButton(self, -1, "button_1")
> > self.label_4 = wxStaticText(self, -1, "label_4")
> > self.text_ctrl_2 = wxTextCtrl(self, -1, "")
> > self.label_5 = wxStaticText(self, -1, "label_5")
> > self.text_ctrl_3 = wxTextCtrl(self, -1, "")
> > self.label_6 = wxStaticText(self, -1, "label_6")
> > self.text_ctrl_4 = wxTextCtrl(self, -1, "")
> > self.label_7 = wxStaticText(self, -1, "label_7")
> > self.text_ctrl_5 = wxTextCtrl(self, -1, "")
> >
> > self.__set_properties()
> > self.__do_layout()
> > # end wxGlade
> >
> > def __set_properties(self):
> > # begin wxGlade: hijo.__set_properties
> > self.SetTitle("Hijito")
> > self.combo_box_1.SetSelection(-1)
> > # end wxGlade
> >
> > def __do_layout(self):
> > # begin wxGlade: hijo.__do_layout
> > grid_sizer_1 = wxGridSizer(2, 2, 1, 1)
> > grid_sizer_3 = wxGridSizer(4, 2, 0, 0)
> > grid_sizer_2 = wxGridSizer(2, 2, 0, 0)
> > grid_sizer_1.Add(self.label_1, 0, wxALL, 3)
> > grid_sizer_2.Add(self.label_2, 0, wxALL, 3)
> > grid_sizer_2.Add(self.combo_box_1, 0, wxALL, 3)
> > grid_sizer_2.Add(self.label_3, 0, wxALL, 3)
> > grid_sizer_2.Add(self.text_ctrl_1, 0, wxALL, 3)
> > grid_sizer_1.Add(grid_sizer_2, 1, wxEXPAND, 0)
> > grid_sizer_1.Add(self.button_1, 0, wxALL, 3)
> > grid_sizer_3.Add(self.label_4, 0, wxALL, 3)
> > grid_sizer_3.Add(self.text_ctrl_2, 0, wxALL, 3)
> > grid_sizer_3.Add(self.label_5, 0, wxALL, 3)
> > grid_sizer_3.Add(self.text_ctrl_3, 0, wxALL, 3)
> > grid_sizer_3.Add(self.label_6, 0, wxALL, 3)
> > grid_sizer_3.Add(self.text_ctrl_4, 0, wxALL, 3)
> > grid_sizer_3.Add(self.label_7, 0, wxALL, 3)
> > grid_sizer_3.Add(self.text_ctrl_5, 0, wxALL, 3)
> > grid_sizer_1.Add(grid_sizer_3, 1, wxEXPAND, 0)
> > self.SetAutoLayout(1)
> > self.SetSizer(grid_sizer_1)
> > grid_sizer_1.Fit(self)
> > grid_sizer_1.SetSizeHints(self)
> > self.Layout()
> > # end wxGlade
> >
> > # end of class hijo
> >
> >
> >
> >
> >
> > _______________________________________________
> > Python-es mailing list
> > Python-es en aditel.org
> > http://listas.aditel.org/listinfo/python-es
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es
Más información sobre la lista de distribución Python-es