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