On Thu, 5 Aug 2010 21:42:31 -0400 Milton Galo Patricio Inostroza Aguilera wrote:
> Disculpa por haberte respondido de esta manera, pero realmente estoy > corto de tiempo. > > [1] http://acinfo.unap.cl/minostro/pyGTK/copia_archivo.tar.gz A mi me da un 404. El día 5 de agosto de 2010 17:19, alfonso saavedra <n4...@yahoo.es> escribió: > Aquí os dejo las lineas y pongo en negrita la función que se > encarga de hacer la busqueda: > > if gobject.idle_add(task.next): > pass > > def buscar(self): > self.model.clear() > nearby_devices = bluetooth.discover_devices() > for bdaddr in nearby_devices: > mac = bdaddr > name = bluetooth.lookup_name(mac) > self.model.append((name, mac)) > yield True > yield False Eso de usar gobject.idle_add + generador como forma de pseudo-threading es una idea ingeniosa (¿lo has encontrado en el pygtk-faq?), pero a la hora de la verdad es menos útil de lo que parece: sólo tiene sentido cuando el generador puede hacer "yields" muy a menudo para devolver el control al bucle de eventos. Aquí por ejemplo imagino que bluetooth.lookup_name() es una operación costosa, y por eso el GUI sigue yendo a trompicones. En ese caso no tendrás más remedio que usar threads. No sé si hay una librería genérica (yo al menos no la conozco) para abstraer threads en pygtk, pero algo hay escrito sobre el tema. Esta idea por ejemplo está bastante bien: http://unpythonic.blogspot.com/2007/08/using-threads-in-pygtk.html Yo mismo escribí hace unos meses un sistema que usa corutinas, en un intento de conseguir una solución transparente: http://code.activestate.com/recipes/577129-run-asynchronous-tasks-using-coroutines/ En fin, échale un ojo y a ver si sacas alguna idea. _______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/