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 original
def 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 original
def 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:
... que es cuando se queda 'parada' la "gui"Ver original
def leer_datos (self): resultado = None doc = ODSReader(self.filechooser.get_filename()) ...
Alguien sabe como hacer esto de forma más eficaz.
Gracias