Forum Programmation.python Pygtk-treeview-lenteur

Posté par  . Licence CC By‑SA.
Étiquettes :
0
13
août
2015

Bonjour,

j'utilise Pygtk sous debian testing pour afficher des données issues de mysql dans un treeview.
Mon treestore fait 35 lignes pour une dizaine de colonne. Tout les calculs sont fait par mysql, j'intègre les éléments par un self.treestore.append( None,(color,rcolor,800,str(row[0]),str(row[1]),…) et puis le treestore dans le treeview : self.treeview1.set_model(self.tree_store),

jusque la tout fonctionne très bien,

Mes données varient en fonction de la date, j ai intégré un caldendar dans ma fenêtre, en cliquant sur la date ( du calendar) je relance ma requête avec une autre date, je génère un nouveau treestore et je l'affiche en l'affectant dans le self.treeview1.set_model(self.tree_store), cela marche toujours, mais après 12 ou 13 changement de date, il y a un décalage entre le click sur la date et l'affichage (l'affichage est très nettement ralenti), le treeview affiche les nouvelles données avec plusieurs secondes de retard par rapport au 12 premier click où cela était instantané.

J'ai tenté de passer le treestore en paramètre de la fonction pour utiliser le même pendant toutes les opérations par treestore.clear et l'introduction des nouvelles données pour éviter les self.treeview1.set_model(self.tree_store) à chaque fois, dans ce cas les ralentissements apparaissent au 3ème ou 4ème changement de date, il semble donc mieux de refaire un treestore à chaque fois.

J'ai utilisé :
self.treeview1.freeze_child_notify()
self.treeview1.thaw_child_notify()
pour gagner du temps, mais sans changement

J'ai utilisé un timer, et il n'y pas d' écart significatif entre les 12 premiers clicks et les suivants. ( j'ai mis des timers à plusieur endroit:calendar, requete, self.treeview1.set_model(self.tree_store))

Je ne comprend pas le pourquoi de ces ralentissements.

Quel est la bonne méthode pour changer le contenu d'un treeview ?

MERCI

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.