Re: Duda sobre wxpython

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