El día 18 de enero de 2012 00:02, Txema Vicente <tx...@nabla.net> escribió:
> No se si es que wx obliga a llamar a MainLoop() en __main__ (no, verdad?) > O es algo que deberia saber de python y esto no se debe hacer por algún > motivo? > > Explicación? Es curioso el caso. En cualquier caso, nunca un "import" debería tener otros efectos laterales que no sea el de declarar e inicializar objetos. Pero sobre todo, nunca debería lanzar hilos de ejecución por no ser seguro, tal y como indica la documentación: http://docs.python.org/library/threading.html#importing-in-threaded-code El porqué se bloquea con unas funciones y no con otras, es algo que debe ser culpa del GIL. Lo mejor para estar seguros es que en el import te limites a "declarar" y que continúes la ejecución una vez terminada la importación: def main(): app = wx.App(redirect=False) app.SetTopWindow(Frame()) app.MainLoop() if __name__=="__main__": main() En 'curioso.py', una vez importado el módulo, ya podrás ejecutar la aplicación con seguridad a través de la función 'main()' Por otro lado, me parece horrible pasar una clase (Test) donde te pide una función para responder al EVT_BUTTON. Aquí pierdes todo control sobre el hilo hijo. Supongo que no será así en el código final. -- Hyperreals *R: http://ch3m4.org/blog Quarks, bits y otras criaturas infinitesimales _______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/