Re: [Python-es] Aplicación escritorio para windows
Yo he hecho algunas aplicaciones visuales en Windows con Python y he usado Glade para generar las interfaces y py2exe para crear la aplicación windows con sus dependencias y todo. No es complicado aunque tampoco es un VisualBasic. Un saludo. El 22 de septiembre de 2012 13:52, RadicalEd escribió: > Para wxPython existe uno bueno llamado VisualWX > > El 22/09/2012 1:42, "Alexandro Colorado" escribió: > > > Hola, > estas haciendo preguntas diferentes. Una cosa es hacer herramientas > visuales para windows. > > Otra cosa es tener un diseñador visual para estas herramientas. > > Las herramientas visuales para windows pueden ser hechas con Python y > algun toolkit que tenga compatibilidad en windows como lo es: > - Tk http://i1-win.softpedia-static.com/screenshots/Trebuchet-Tk_1.png > - Gtk http://www.emcken.dk/screenshots/GTK%20i%20windows.jpg > - Qt4 http://sourceforge.net/projects/ncreport/screenshots/107225 > - WxWidgets http://www.wxwidgets.org/images/screens/gamedevelop_win.jpg > > Estos toolkits corren en windows como podras ver en las imagenes. Sin > embargo la programación es hecha dentro del codigo. > > El diseñador grafico es algo diferente el cual usualmente es un > programa dedicado a dibujar la interfaz. El diseñador para el toolkit > es algo que parece que es lo que estas buscando. No todos los toolkits > tienen un diseñado. La forma mas tradicional es que el diseñador > genera un XML copuesto de los componentes del toolkit y el codigo coje > estos elementos para hacer el rendering de instrucciones. > > http://doc.qt.digia.com/4.7-snapshot/designer-manual.html > > GTK usa Glade, TK y wxWidgets ignoro si tienen un diseñador o varios. > Tambien no se haya un diseñador universal que aplique una conversion a > todos los toolkits. > > > On 9/22/12, kausdiv wrote: > > Hola de nuevo. > > > > No consigo encontrar un sistema... > > -- > Alexandro Colorado > PPMC Apache OpenOffice > http://es.openoffice.org > > ___ > Python-es mailing list > Python-es@python.org > http://m... > > > ___ > Python-es mailing list > Python-es@python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- Francisco Moreno ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] Aplicación escritorio para windows
Yo utilizo GUI2EXE y va muy bien, te anexo el link http://code.google.com/p/gui2exe/ De: Francisco Moreno Para: La lista de python en castellano Enviado: Viernes, 5 de octubre, 2012 8:19 A.M. Asunto: Re: [Python-es] Aplicación escritorio para windows Yo he hecho algunas aplicaciones visuales en Windows con Python y he usado Glade para generar las interfaces y py2exe para crear la aplicación windows con sus dependencias y todo. No es complicado aunque tampoco es un VisualBasic. Un saludo. El 22 de septiembre de 2012 13:52, RadicalEd escribió: Para wxPython existe uno bueno llamado VisualWX >El 22/09/2012 1:42, "Alexandro Colorado" escribió: >> >> >>Hola, >>estas haciendo preguntas diferentes. Una cosa es hacer herramientas >>visuales para windows. >> >>Otra cosa es tener un diseñador visual para estas herramientas. >> >>Las herramientas visuales para windows pueden ser hechas con Python y >>algun toolkit que tenga compatibilidad en windows como lo es: >>- Tk http://i1-win.softpedia-static.com/screenshots/Trebuchet-Tk_1.png >>- Gtk http://www.emcken.dk/screenshots/GTK%20i%20windows.jpg >>- Qt4 http://sourceforge.net/projects/ncreport/screenshots/107225 >>- WxWidgets http://www.wxwidgets.org/images/screens/gamedevelop_win.jpg >> >>Estos toolkits corren en windows como podras ver en las imagenes. Sin >>embargo la programación es hecha dentro del codigo. >> >>El diseñador grafico es algo diferente el cual usualmente es un >>programa dedicado a dibujar la interfaz. El diseñador para el toolkit >>es algo que parece que es lo que estas buscando. No todos los toolkits >>tienen un diseñado. La forma mas tradicional es que el diseñador >>genera un XML copuesto de los componentes del toolkit y el codigo coje >>estos elementos para hacer el rendering de instrucciones. >> >>http://doc.qt.digia.com/4.7-snapshot/designer-manual.html >> >>GTK usa Glade, TK y wxWidgets ignoro si tienen un diseñador o varios. >>Tambien no se haya un diseñador universal que aplique una conversion a >>todos los toolkits. >> >> >>On 9/22/12, kausdiv wrote: >>> Hola de nuevo. >>> >>> No consigo encontrar un sistema... >>-- >>Alexandro Colorado >>PPMC Apache OpenOffice >>http://es.openoffice.org >> >>___ >>Python-es mailing list >>Python-es@python.org >>http://m... >___ >Python-es mailing list >Python-es@python.org >http://mail.python.org/mailman/listinfo/python-es >FAQ: http://python-es-faq.wikidot.com/ > > -- Francisco Moreno ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
[Python-es] Variables wxpython
Buenas llevo mas o menos 2 semanas aprendiendo a programar en python, y me encuentro en una encrucijada. Necesito sacar información de Ventana_New (tc1) y llevarlo al Ventana.SetTitle, no se como podría hacerlo, gracias. Ahí va mi código: import wx class Aplicacion(wx.App): def OnInit(self): self.frame = Ventana(None, -1, title = "Control Horario") self.SetTopWindow(self.frame) self.frame.Show() return True class Ventana(wx.Frame): def __init__(self, parent, id, title): super(Ventana, self).__init__(parent, id, title, size = (800, 275)) panel = wx.Panel(self) menubar = wx.MenuBar() arcm = wx.Menu() anmi = wx.MenuItem(arcm, ID_NUEVO, "&Nuevo\tCtrl+N") arcm.AppendItem(anmi) menubar.Append(arcm, '&Archivo') self.SetMenuBar(menubar) self.Bind(wx.EVT_MENU, self.OnMenu) def OnMenu(self, event): evt_id = event.GetId () if evt_id == ID_NUEVO: self.frame = Ventana_New(None, -1, title = "Nuevo Usuario") class Ventana_New(wx.Frame): def __init__(self, parent, id, title): self.padre = parent wx.Frame.__init__(self, parent, id, title, size = (295, 357)) self.panel = Panel_New(self) self.Show(True) class Panel_New(wx.Panel): def __init__(self, parent, *args, **kwargs): self.padre = parent wx.Panel.__init__(self, parent, *args, **kwargs) gs = wx.FlexGridSizer(3, 2, 9, 9) vbox = wx.BoxSizer(wx.VERTICAL) hbox = wx.BoxSizer(wx.HORIZONTAL) nombre = wx.StaticText(self, -1, "Nombre:") self.tc1 = wx.TextCtrl(self, -1, size = (150, -1)) gs.AddMany([(nombre), (self.tc1, 1, wx.LEFT, 10)] self.btn = wx.Button(self, -1, 'Aceptar', size = (-1, 30)) hbox.Add(self.btn) vbox.Add(hbox, 0, wx.ALIGN_CENTER | wx.BOTTOM, 10) self.Bind(wx.EVT_BUTTON, self.OnAceptar, id = self.btn.GetId()) self.SetSizer(vbox) def OnAceptar(self, event): padre = self.GetParent() padre.Close(True) ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
[Python-es] encapsular llamadas a metodos arbitrarios desde una clase container
Hola, pido disculpas por adelantado por lo criptico del "subject". Intentare explicar mejor lo que quiero hacer. Quiero crear una clase Container que contiene una lista de objetos de una clase X arbitraria. -- class Container: def __init__(self, list_obj): self.list_obj = list_obj class X: blah x1 = X() x2 = X() x3 = X() container = Container( [ x1, x2, x3] ) -- Me gustaria poder llamar a un metodo cualquiera en Container, y que internamente haga un loop de llamadas a ese mismo metodo para todos los objectos de la lista. Por ejemplo, si hago container.f() que internamente se haga un loop de llamadas: x1.f() x2.f() x3.f() Lo mas cerca que estoy de conseguirlo es con lo siguiente: -- class Container: ... ... def __getattr__(self, atr): outs = [] for o in self.list_obj: out = getattr(o, atr)() outs.append(out) return outs -- con ese codigo puedo hacer container.f container.g container.h pero no container.f() container.g() container.h() Sigo investigando, pero si mientras tanto alguien me ofrece una pista, sera mas que bienvenida. Saludos cordiales, Jose P.S. perdon por la ausencia de tildes. ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] encapsular llamadas a metodos arbitrarios desde una clase container
Para hacer dinámico lo quieres mi opción es que crees el atributo en la clase container con setattr() y luego asignar a este nuevo atributo el objeto que necesitas, bien sea una clase o un atributo de ella. El 05/10/2012 11:13, "Jose Caballero" escribió: > Hola, > > > > pido disculpas por adelantado por lo criptico del "subject". Intentare > explicar mejor lo que quiero hacer. > Quiero crear una clase Container que contiene una lista de objetos de una > clase X arbitraria. > > > > -- > class Container: > def __init__(self, list_obj): > self.list_obj = list_obj > > class X: > blah > > x1 = X() > x2 = X() > x3 = X() > > container = Container( [ x1, x2, x3] ) > > -- > > > Me gustaria poder llamar a un metodo cualquiera en Container, y que > internamente haga un loop de llamadas a ese mismo metodo para todos los > objectos de la lista. > Por ejemplo, si hago > > container.f() > > que internamente se haga un loop de llamadas: > > x1.f() > x2.f() > x3.f() > > > Lo mas cerca que estoy de conseguirlo es con lo siguiente: > > > > -- > class Container: >... >... >def __getattr__(self, atr): > outs = [] > for o in self.list_obj: > out = getattr(o, atr)() > outs.append(out) > return outs > > -- > > > con ese codigo puedo hacer > > container.f > container.g > container.h > > pero no > > container.f() > container.g() > container.h() > > > Sigo investigando, pero si mientras tanto alguien me ofrece una pista, > sera mas que bienvenida. > > > Saludos cordiales, > Jose > P.S. perdon por la ausencia de tildes. > > > > > > > ___ > Python-es mailing list > Python-es@python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] encapsular llamadas a metodos arbitrarios desde una clase container
2012/10/5 Jose Caballero : > Hola, > > > > pido disculpas por adelantado por lo criptico del "subject". Intentare > explicar mejor lo que quiero hacer. > Quiero crear una clase Container que contiene una lista de objetos de una > clase X arbitraria. > > > -- > class Container: > def __init__(self, list_obj): > self.list_obj = list_obj > > class X: > blah > > x1 = X() > x2 = X() > x3 = X() > > container = Container( [ x1, x2, x3] ) > -- > > > Me gustaria poder llamar a un metodo cualquiera en Container, y que > internamente haga un loop de llamadas a ese mismo metodo para todos los > objectos de la lista. > Por ejemplo, si hago > > container.f() > > que internamente se haga un loop de llamadas: > > x1.f() > x2.f() > x3.f() > > > Lo mas cerca que estoy de conseguirlo es con lo siguiente: > > > -- > class Container: >... >... >def __getattr__(self, atr): > outs = [] > for o in self.list_obj: > out = getattr(o, atr)() > outs.append(out) > return outs > -- > > > con ese codigo puedo hacer > > container.f > container.g > container.h > > pero no > > container.f() > container.g() > container.h() > > > Sigo investigando, pero si mientras tanto alguien me ofrece una pista, sera > mas que bienvenida. Tal vez algo como: class Cont: ... def __getattr__(self, atr): def foo(): outs = [] for o in self.list_obj: out = getattr(o, atr)() outs.append(out) return outs return foo > > Saludos cordiales, > Jose > P.S. perdon por la ausencia de tildes. UTF existe, ya no es excusa ;-) Saludos -- A menudo unas pocas horas de "Prueba y error" podrán ahorrarte minutos de leer manuales. ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] Variables wxpython
On Fri, Oct 5, 2012 at 9:12 AM, Gonzalo Mouriÿfff1o Pardo wrote: > Buenas llevo mas o menos 2 semanas aprendiendo a programar en python, y me > encuentro en una encrucijada. > Necesito sacar información de Ventana_New (tc1) y llevarlo al > Ventana.SetTitle, no se como podría hacerlo, gracias. > Ahí va mi código: > > import wx > > class Aplicacion(wx.App): > > def OnInit(self): > self.frame = Ventana(None, -1, title = "Control Horario") > self.SetTopWindow(self.frame) > self.frame.Show() > return True > > class Ventana(wx.Frame): > > def __init__(self, parent, id, title): > super(Ventana, self).__init__(parent, id, title, size = (800, 275)) > panel = wx.Panel(self) > menubar = wx.MenuBar() > arcm = wx.Menu() > anmi = wx.MenuItem(arcm, ID_NUEVO, "&Nuevo\tCtrl+N") > arcm.AppendItem(anmi) > menubar.Append(arcm, '&Archivo') > self.SetMenuBar(menubar) > self.Bind(wx.EVT_MENU, self.OnMenu) > > def OnMenu(self, event): > evt_id = event.GetId () > if evt_id == ID_NUEVO: > self.frame = Ventana_New(None, -1, title = "Nuevo Usuario") > > class Ventana_New(wx.Frame): > > def __init__(self, parent, id, title): > self.padre = parent > wx.Frame.__init__(self, parent, id, title, size = (295, 357)) > self.panel = Panel_New(self) > self.Show(True) > > class Panel_New(wx.Panel): > > def __init__(self, parent, *args, **kwargs): > self.padre = parent > wx.Panel.__init__(self, parent, *args, **kwargs) > gs = wx.FlexGridSizer(3, 2, 9, 9) > vbox = wx.BoxSizer(wx.VERTICAL) > hbox = wx.BoxSizer(wx.HORIZONTAL) > nombre = wx.StaticText(self, -1, "Nombre:") > self.tc1 = wx.TextCtrl(self, -1, size = (150, -1)) > gs.AddMany([(nombre), (self.tc1, 1, wx.LEFT, 10)] > self.btn = wx.Button(self, -1, 'Aceptar', size = (-1, 30)) > hbox.Add(self.btn) > vbox.Add(hbox, 0, wx.ALIGN_CENTER | wx.BOTTOM, 10) > self.Bind(wx.EVT_BUTTON, self.OnAceptar, id = self.btn.GetId()) > self.SetSizer(vbox) > > def OnAceptar(self, event): > padre = self.GetParent() > padre.Close(True) > Hola, tu ejemplo no corre así que no lo puedo probar... pero lo que puedes hacer es añadir un evento close: def OnMenu(self, event): evt_id = event.GetId() if evt_id == ID_NUEVO: self.frame = Ventana_New(None, -1, title = "Nuevo Usuario") self.frame.Bind(wx.EVT_CLOSE, self.OnCloseMenu) self.frame.Show(True) def OnCloseMenu(self, event): print self.frame.panel.tc1.GetValue() self.frame.Destroy() También tendrías que chequear si solo se ha cerrado la ventana o se ha presionado el boton Aceptar. Añade un atributo aceptado con valor False a Ventana_New y lo cambias a True en OnAceptar. Luego en OnCloseMenu chequeas `if self.frame.aceptado: ...` Saludos -- A menudo unas pocas horas de "Prueba y error" podrán ahorrarte minutos de leer manuales. ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] encapsular llamadas a metodos arbitrarios desde una clase container
si no te molesta tocar un poco de programación funcional, lambdas y demas: a = ['hola', 'adios'] map(lambda x:x.swapcase(), a) esto da un resultado de: ['HOLA', 'ADIOS'] espero que te sirva para orientar lo que quieres hacer ;) 2012/10/5 Carlos Zuniga : > 2012/10/5 Jose Caballero : >> Hola, >> >> >> >> pido disculpas por adelantado por lo criptico del "subject". Intentare >> explicar mejor lo que quiero hacer. >> Quiero crear una clase Container que contiene una lista de objetos de una >> clase X arbitraria. >> >> >> -- >> class Container: >> def __init__(self, list_obj): >> self.list_obj = list_obj >> >> class X: >> blah >> >> x1 = X() >> x2 = X() >> x3 = X() >> >> container = Container( [ x1, x2, x3] ) >> -- >> >> >> Me gustaria poder llamar a un metodo cualquiera en Container, y que >> internamente haga un loop de llamadas a ese mismo metodo para todos los >> objectos de la lista. >> Por ejemplo, si hago >> >> container.f() >> >> que internamente se haga un loop de llamadas: >> >> x1.f() >> x2.f() >> x3.f() >> >> >> Lo mas cerca que estoy de conseguirlo es con lo siguiente: >> >> >> -- >> class Container: >>... >>... >>def __getattr__(self, atr): >> outs = [] >> for o in self.list_obj: >> out = getattr(o, atr)() >> outs.append(out) >> return outs >> -- >> >> >> con ese codigo puedo hacer >> >> container.f >> container.g >> container.h >> >> pero no >> >> container.f() >> container.g() >> container.h() >> >> >> Sigo investigando, pero si mientras tanto alguien me ofrece una pista, sera >> mas que bienvenida. > > Tal vez algo como: > > class Cont: > ... > def __getattr__(self, atr): > def foo(): > outs = [] > for o in self.list_obj: > out = getattr(o, atr)() > outs.append(out) > return outs >return foo > > >> >> Saludos cordiales, >> Jose >> P.S. perdon por la ausencia de tildes. > > UTF existe, ya no es excusa ;-) > > Saludos > -- > A menudo unas pocas horas de "Prueba y error" podrán ahorrarte minutos > de leer manuales. > ___ > Python-es mailing list > Python-es@python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
[Python-es] Boa-constructor (no salen unas propiedades)
Buen día para todos: resulta que estoy incursionando en python y comencé a trabajar con boa-constructor, estaba siguiendo el tutorial para crear la primera aplicación y cuando llegué a agregar el "status bar" me encontré con que en la guía dice que me debe aparecer '+++' en el campo fields, no me aparece nada y doy click y tampoco reacciona. Si alguien quisiera echarme una mano se lo agradecería mucho. att, luis jaime ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] Aplicación escritorio para windows
Seria interesante un tutorial de esto, supongo que mucha gente nueva a python y que necesita trabajar en windows, le gustaria ver un ejemplo de algun gui siendo compilado para su plataforma sobretodo si viene de toolkits libres como GTK. On 10/5/12, Jean Carlos Rodrìguez wrote: > Yo utilizo GUI2EXE y va muy bien, te anexo el link > http://code.google.com/p/gui2exe/ > > > > > De: Francisco Moreno > Para: La lista de python en castellano > Enviado: Viernes, 5 de octubre, 2012 8:19 A.M. > Asunto: Re: [Python-es] Aplicación escritorio para windows > > > Yo he hecho algunas aplicaciones visuales en Windows con Python y he usado > Glade para generar las interfaces y py2exe para crear la aplicación windows > con sus dependencias y todo. No es complicado aunque tampoco es un > VisualBasic. > > Un saludo. > > > El 22 de septiembre de 2012 13:52, RadicalEd > escribió: > > Para wxPython existe uno bueno llamado VisualWX >>El 22/09/2012 1:42, "Alexandro Colorado" escribió: >>> >>> >>>Hola, >>>estas haciendo preguntas diferentes. Una cosa es hacer herramientas >>>visuales para windows. >>> >>>Otra cosa es tener un diseñador visual para estas herramientas. >>> >>>Las herramientas visuales para windows pueden ser hechas con Python y >>>algun toolkit que tenga compatibilidad en windows como lo es: >>>- Tk http://i1-win.softpedia-static.com/screenshots/Trebuchet-Tk_1.png >>>- Gtk http://www.emcken.dk/screenshots/GTK%20i%20windows.jpg >>>- Qt4 http://sourceforge.net/projects/ncreport/screenshots/107225 >>>- WxWidgets http://www.wxwidgets.org/images/screens/gamedevelop_win.jpg >>> >>>Estos toolkits corren en windows como podras ver en las imagenes. Sin >>>embargo la programación es hecha dentro del codigo. >>> >>>El diseñador grafico es algo diferente el cual usualmente es un >>>programa dedicado a dibujar la interfaz. El diseñador para el toolkit >>>es algo que parece que es lo que estas buscando. No todos los toolkits >>>tienen un diseñado. La forma mas tradicional es que el diseñador >>>genera un XML copuesto de los componentes del toolkit y el codigo coje >>>estos elementos para hacer el rendering de instrucciones. >>> >>>http://doc.qt.digia.com/4.7-snapshot/designer-manual.html >>> >>>GTK usa Glade, TK y wxWidgets ignoro si tienen un diseñador o varios. >>>Tambien no se haya un diseñador universal que aplique una conversion a >>>todos los toolkits. >>> >>> >>>On 9/22/12, kausdiv wrote: Hola de nuevo. No consigo encontrar un sistema... >>>-- >>>Alexandro Colorado >>>PPMC Apache OpenOffice >>>http://es.openoffice.org >>> >>>___ >>>Python-es mailing list >>>Python-es@python.org >>>http://m... >>___ >>Python-es mailing list >>Python-es@python.org >>http://mail.python.org/mailman/listinfo/python-es >>FAQ: http://python-es-faq.wikidot.com/ >> >> > > > -- > Francisco Moreno > > ___ > Python-es mailing list > Python-es@python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ -- Alexandro Colorado PPMC Apache OpenOffice http://es.openoffice.org ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] encapsular llamadas a metodos arbitrarios desde una clase container
> > Tal vez algo como: > > class Cont: > ... > def __getattr__(self, atr): > def foo(): > outs = [] > for o in self.list_obj: > out = getattr(o, atr)() > outs.append(out) > return outs >return foo > > > Funciona a la perfeccion. De esa forma se devuelve una funcion, y no el resultado de la misma, y asi puedo hacer luego cont.f() Muchas gracias ! > > UTF existe, ya no es excusa ;-) > Vale. Ahora me toca googlear para intentar entender lo que eso significa y, sobre todo, como me permite escribir con tildes en un teclado americano y sin .Xmodmap. ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] encapsular llamadas a metodos arbitrarios desde una clase container
2012/10/5 Jose Caballero : > >> >> >> UTF existe, ya no es excusa ;-) > > > > Vale. Ahora me toca googlear para intentar entender lo que eso significa y, > sobre todo, como me permite escribir con tildes en un teclado americano y > sin .Xmodmap. > setxkbmap -layout "us(intl)" O en xorg.conf: Section "InputDevice" ... Option "XkbLayout" "us" Option "XkbVariant" "intl" EndSection Saludos -- A menudo unas pocas horas de "Prueba y error" podrán ahorrarte minutos de leer manuales. ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] encapsular llamadas a metodos arbitrarios desde una clase container
On Oct 5, 2012, at 15:49, Jose Caballero wrote: > > > Tal vez algo como: > > class Cont: > ... > def __getattr__(self, atr): > def foo(): > outs = [] > for o in self.list_obj: > out = getattr(o, atr)() > outs.append(out) > return outs >return foo > > > > Funciona a la perfeccion. De esa forma se devuelve una funcion, y no el > resultado de la misma, y asi puedo hacer luego cont.f() > Muchas gracias ! > > Hmmm. Ahora tengo que investigar qué hacer si quiero que alguno de los métodos acepte inputs. Por ej: container.f(1, 2, 3) Tengo que averiguar cómo pasar 1 2 3 a través de foo(). Imagino que haciendo algo tipo def foo(*k, **kw): ... out = getatr(o, atr)(k, kw) ... Jose ahora en una máquina con tildes ;)___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] encapsular llamadas a metodos arbitrarios desde una clase container
2012/10/5 Jose Caballero : > Hmmm. > Ahora tengo que investigar qué hacer si quiero que alguno de los métodos > acepte inputs. > Por ej: > > container.f(1, 2, 3) > > Tengo que averiguar cómo pasar 1 2 3 a través de foo(). > Imagino que haciendo algo tipo > >def foo(*k, **kw): >... >out = getatr(o, atr)(k, kw) Solo tienes que pasarle la expansión de argumentos a la función: out = getatr(o, atr)(*k, **kw) > > Jose > ahora en una máquina con tildes ;) :) Saludos -- A menudo unas pocas horas de "Prueba y error" podrán ahorrarte minutos de leer manuales. ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
[Python-es] Saber si un modulo existe aunque contenga un error ImportError.
Buenas. Acabo de topar con un detalle que no se me ocurre como resolver. En resumen, quiero poder distinguir entre estas dos situaciones: 1.- Excepcion ImportError porque un modulo no existe. 2.- Excepcion ImportError porque el modulo existe pero al importarlo tiene un error dentro, del tipo ImportError Ideas? Detalles: Estoy haciendo un toolkit en App Engine, y tengo un paquete "call" en el que voy metiendo modulos que se encargan de responder peticiones HTTP. Básicamente si se llama a http://...//call/hello/world, se mira a ver si existe un modulo call.hello.world, y si es asi se importa y la respuesta la da su método main(). Si hay un error en el modulo, la respuesta es el traceback. Si no existe el modulo, se va probando hacia arriba "call.hello" y finalmente call.main() dice que no tiene respuesta para esa ruta. Esto es un trozo de la clase que hace esto: @route(r'/pyojo/', "call") class Command(Request): def __module(self, command): code = None try: module = import_call(command) code = module.main(self) except ImportError: pass #< Problema si el modulo si que existe except Exception: code = Config.log_exception(command) return code Y esta es la funcion para importar, que funciona bien: def import_call(name, module=".call"): name = module+"."+name mod = __import__(name) components = name.split('.') for comp in components[1:]: mod = getattr(mod, comp) return mod Salud. ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/