Sabemos que este widget puede presentar datos en formato tabla. Por una parte tengo la cabecera y por otro las filas, donde muestro los resultados del cursor de consultas a una base de datos. Hasta aqui todo bien.
Quiero ordenar los datos picando sobre la cabecera del tree, y de hecho recibo los resultados de un query tipo "SELECT * FROM mi_tabla ORDER BY campo_1". Picando en la cabecera de cada columna me muestra los datos ordenados por el campo que quiero,
El problema es que con cada consulta nueva me refresca tambien la cabecera, quedando muy feo, el parpadeo que produce.
Adjunto el fichero de prueba (nota: no me deja) que he fabricado emulando la respuesta de una query SELECT, generando 500.000 registros (se puede cambiar el num. de tuplas). Es muy caro en tiempo y recursos de memoria la ordenación de la lista de tuplas (los registros de la BD) por el campo soliticitado con
Es la segunda vez que utilizo este widget. Habia pensado en dividir el frame padre en dos subframes donde colocar: en el subframe de arriba la cabecera y en el subrame de abajo las filas registros. Asi, en principio, no parpadearía la cabecera con cada peitición de SELECT ORDER
sería algo así:
La cabecera:
Las filas:
y luego las lambdas de la cabecera ligarlas exclusivamente al arbol inferior.
Alquien que tenga más experiencia que yo, y me pueda aconsejar.
Gracias
pdta.: el archivo está en :
https://drive.google.com/file/d/0B2mK6w2...sp=sharing
Quiero ordenar los datos picando sobre la cabecera del tree, y de hecho recibo los resultados de un query tipo "SELECT * FROM mi_tabla ORDER BY campo_1". Picando en la cabecera de cada columna me muestra los datos ordenados por el campo que quiero,
El problema es que con cada consulta nueva me refresca tambien la cabecera, quedando muy feo, el parpadeo que produce.
Adjunto el fichero de prueba (nota: no me deja) que he fabricado emulando la respuesta de una query SELECT, generando 500.000 registros (se puede cambiar el num. de tuplas). Es muy caro en tiempo y recursos de memoria la ordenación de la lista de tuplas (los registros de la BD) por el campo soliticitado con
Código:
l_ordenada = sorted(lista, key=lambda tup: tup[elem_tupla])
Es la segunda vez que utilizo este widget. Habia pensado en dividir el frame padre en dos subframes donde colocar: en el subframe de arriba la cabecera y en el subrame de abajo las filas registros. Asi, en principio, no parpadearía la cabecera con cada peitición de SELECT ORDER
sería algo así:
La cabecera:
Código:
self.arbol_sup= ttk.Treeview(self.frm_sup)
# creo las cabeceras - la columna 0 esta puesta a ancho 0
self.arbol_sup.heading('#0', text='', anchor='w')
self.arbol_sup.heading('#1', text='Campo 1
....
Las filas:
Código:
self.arbol_inf= ttk.Treeview(self.frm_sup)
#creo los indices de las columnas
self.arbol_inf["columns"] = ("campo1", ...)
self.arbol_inf.column("#0",...)
self.arbol_inf.column("campo1",...)
y luego las lambdas de la cabecera ligarlas exclusivamente al arbol inferior.
Alquien que tenga más experiencia que yo, y me pueda aconsejar.
Gracias
pdta.: el archivo está en :
https://drive.google.com/file/d/0B2mK6w2...sp=sharing