Re: Duda sobre wxpython

Eduardo Matus <[email protected]>
Newsgroups gmane.comp.python.general.castellano
Message-ID <[email protected]>
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 <[email protected]>

> 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 <[email protected]> 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 <[email protected]>
> >
> > > 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 <[email protected]>
> 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 <[email protected]>
> > > >
> > > > > 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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.