Buenas.
tengo un cuadro de diálogo para que el usuario introduzca un archivo .ods y leer los datos de éste, para pasarlo a una base de datos.
Utilizo una adaptación de la clase ODSReader de Marco Conti, http://www.marco83.com/work/wp-content/uploads/2011/11/odf-to-array.py, para leer la tabla.
Mi problema es que cuando le doy al botón aceptar, éste queda como pulsado, hasta que concluye la lectura, del archivo.
Me gustaría que al hacer click, se pusiera el cursor en modo espera (Watch) y al finalizar la tarea en modo normal, algo así:
Código Python:
Ver originaldef aceptar(self, widget):
self.cambiar_cursor (gtk.gdk.WATCH)
#self.widgets.queue_draw()
datos = self.leer_datos()
self.cambiar_cursor(None)
He probado con este "cambiar_cursor", que he adaptado de un código que he encontrado en internet, ...
Código Python:
Ver originaldef cambiar_cursor (self, cursor):
gdk_win = gtk.gdk.Window(self.widgets.window,
gtk.gdk.screen_width(),
gtk.gdk.screen_height(),
gtk.gdk.WINDOW_CHILD,
0,
gtk.gdk.INPUT_ONLY)
if cursor:
gdk_cursor = gtk.gdk.Cursor(cursor)
else:
gdk_cursor = None
gdk_win.set_cursor(gdk_cursor)
gdk_win.show()
... PERO, el cursor se activa tras la lectura, el botón se mantiene pulsado durante bastante tiempo, he probado con queue_draw() -como aparece en el código: comentado-, pero tampoco.
Pienso que el problema está en la carga del archivo...
Código Python:
Ver originaldef leer_datos (self):
resultado = None
doc = ODSReader(self.filechooser.get_filename())
...
... que es cuando se queda 'parada' la "gui"
Alguien sabe como hacer esto de forma más eficaz.
Gracias