Duda sobre wxpython

Eduardo Matus ematus en gmail.com
Lun Jul 20 20:42:20 CEST 2009


tu codigo no va a funcionar con interfaz grafica, ahora tienes que compartir
el mainloop de la aplicacion grafica o si no estaria siempre pegada. esto no
es un problema de python ni nada, con cualquier lenguaje y/o toolkit grafico
pasa esto.
la forma mas simple es usar Twisted que trae un reactor para wx

salu2

2009/7/20 Carlos Herrera Polo <carlos.herrerapolo en gmail.com>

> Mi codigo antiguo era un programa con varias funciones y comenzaba asi:
>
> def main():
>    while 1 == 1:
>        fn_borra_directorio()
>        gi_total_msg = 0
>        process_server(gs_srv_imap, gs_usr_imap, gs_pass_imap)
>        print 'Procesando : ' + str (gs_email_remitente_smtp)
>
>        # Pausa de 30 segundos
>        time.sleep(30)
>
>
> La funcion process_server invoca a otras funciones mas, utilizo solamente
> programacion estructurada, el programita hace lo que necesito.
>
> Luego, diseñe un formulario :
>
> class MyFrame_principal ( wx.Frame ):
>
> y ahora dentro de ese formulario cree un evento timer que hace lo que hacia
> el codigo anterior, pero dentro de una funcion ( o metodo) de la clase
> MyFrame_principal....
>
> El tema esta que dentro de ese evento llamo a la funcion "process_server",
> la cual llama a varias funciones mas y en una de ellas tengo el print que
> necesito cambiar.... ahi es donde necesito hacer referencia a las etiquetas
> para ir cambiando atributos.
>
>
> def OnTimer(self, event):
>
>        fn_borra_directorio()
>        gi_total_msg = 0
>        global gi_total_procesos
>        gi_total_procesos = gi_total_procesos + 1
>        process_server(gs_srv_imap, gs_usr_imap, gs_pass_imap)
>        self.m_staticText5.SetLabel(str (gi_total_procesos) + ' | Procesando
> : ' + str (gs_email_remitente_smtp) + ' | '+fn_today.fn_today())
>
>
>
> Encontre esto :
> http://osdir.com/ml/org.user-groups.python.argentina/2007-05/msg00407.html
>
> Pero no me funciona..... :s
>
> Gracias Eduardo por tu tiempo
> El 20 de julio de 2009 13:21, Eduardo Matus <ematus en gmail.com> escribió:
>
> > tu codigo antiguo es una clase o solo funciones??
> > form = MyFrame_principal(None)
> > revisaCorreos = RevisaCorreos(form)
> >
> > en el constructor de la clase revisaCorreos deberia ser algo así
> > def __init__(self, formulario):
> >        self.formulario = formulario
> >
> > def timerCallBack(self):
> >       self.formulario.cambiaTexto("algo")
> >
> >
> > que tipo de timer estas usando??
> >
> >
> >
> > 2009/7/20 Carlos Herrera Polo <carlos.herrerapolo en gmail.com>
> >
> > > Gracias Eduardo por tu pronta respuesta.
> > >
> > > Entiendo lo de la funcion que puedo incorportala dentro de la clase,
> eso
> > es
> > > sencillo.
> > >
> > > Lo que no se aun es como hago lo segundo, es decir pasar la instancia
> del
> > > formulario...
> > >
> > > Yo declare mi ventana principal de esta forma :
> > >
> > > class MyFrame_principal ( wx.Frame ):
> > >
> > >
> > > y en el main() del programa la invoque asi :
> > >
> > > app = wx.PySimpleApp()
> > > frame=MyFrame_principal(None)
> > > app.MainLoop()
> > >
> > > Como tendria que hacer para instanciar la clase desde mi funcion ?
> > >
> > > Mil gracias de nuevo Eduardo por tu apoyo. Espero comprendas que recien
> > me
> > > estoy iniciando en esto de Python ..
> > >
> > > Saludos
> > >
> > > El 20 de julio de 2009 12:52, Eduardo Matus <ematus en gmail.com>
> escribió:
> > >
> > > > crea una funcion en la clase donde esta el statictext para cambiar el
> > > texto
> > > > def cambiaTexto(self, texto):
> > > >       self.staticText5.SetLabel(unicode(texto))
> > > >
> > > > en tu codigo original le podrias pasar la instancia del formulario y
> > asi
> > > > llamar a la funcion...
> > > > esto es si no quieres hacer muchas modificaciones a tu codigo
> original.
> > > >
> > > > 2009/7/20 Carlos Herrera Polo <carlos.herrerapolo en gmail.com>
> > > >
> > > > > Estimados:
> > > > >
> > > > > Hace unos meses desarrolle un pequeño proceso en python el cual
> > > procesaba
> > > > > correos electronicos con IMAP cada cierto lapso de tiempo y
> respondia
> > > al
> > > > > remitente con unos archivos adjuntos, deje el programa listo y al
> ser
> > > un
> > > > > proceso no necesitaba una GUI. El codigo principalmente estaba
> > > > estructurado
> > > > > con funciones de python.
> > > > >
> > > > > Como me interese en wxPython decidi hacerlo un poco mas "vistoso" y
> > > > comence
> > > > > a desarrollar mi version GUI ..
> > > > > Entonces, planeo utilizar el codigo que elabore anteriormente ya
> que
> > me
> > > > > funciona bien... Lo que quiero hacer es que ahora los mensajes de
> > > alerta
> > > > > figuren dentro de etiquetas de la ventana.
> > > > >
> > > > > Mi gran duda es :
> > > > >
> > > > > Dentro de la clase de la ventana principal tengo los "static text",
> > eso
> > > > ya
> > > > > funciona.. proceso con el evento timer la lectura del buzon IMAP y
> > > > funciona
> > > > > bien..
> > > > >
> > > > > Mi problema es que para reutilizar mi codigo anterior, tengo que
> > hacer
> > > > que
> > > > > desde las funciones cambiar lo que hacia con PRINT y cambiarlo por
> > > > > SetLabel,
> > > > > por ejemplo :
> > > > >
> > > > >            # print 'Procesando adjuntos...' (Asi era antes)
> > > > >
> > > > >            MyFrame_principal.m_staticText5.SetLabel('Procesando
> > > > > adjuntos...')  (Asi lo quiero dejar)
> > > > >
> > > > > Mi problema esta en que no se como hacer referencia dentro de una
> > > funcion
> > > > > al
> > > > > statictext, ya que la funcion no esta dentro de ninguna clase, he
> > leido
> > > > los
> > > > > manuales y no encuentro como hacer esa referencia, he visto que se
> > > puede
> > > > > invocar atributos de controles desde distintas ventanas, pero no he
> > > > > encontrado como hacer que desde una funcion se cambie el atributo,
> > > > >
> > > > > Si alguien me puede orientar en este tema les estare muy
> agradecidos.
> > > > >
> > > > > Saludos
> > > > > _______________________________________________
> > > > > Lista de correo Python-es
> > > > > http://listas.aditel.org/listinfo/python-es
> > > > > FAQ: http://listas.aditel.org/faqpyes
> > > > >
> > > > _______________________________________________
> > > > Lista de correo Python-es
> > > > http://listas.aditel.org/listinfo/python-es
> > > > FAQ: http://listas.aditel.org/faqpyes
> > > >
> > > _______________________________________________
> > > Lista de correo Python-es
> > > http://listas.aditel.org/listinfo/python-es
> > > FAQ: http://listas.aditel.org/faqpyes
> > >
> > _______________________________________________
> > Lista de correo Python-es
> > http://listas.aditel.org/listinfo/python-es
> > FAQ: http://listas.aditel.org/faqpyes
> >
> _______________________________________________
> Lista de correo Python-es
> http://listas.aditel.org/listinfo/python-es
> FAQ: http://listas.aditel.org/faqpyes
>
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





Más información sobre la lista de distribución Python-es