2011-08-25 3 views
2

J'essaie de savoir comment supprimer une ligne dans une arborescence pygtk sans la sélectionner. Je peux supprimer des lignes en sélectionnant la ligne en premier mais l'application sur laquelle je travaille doit pouvoir supprimer automatiquement les lignes (sans que l'utilisateur ne sélectionne la ligne). Aussi simple que cela puisse paraître, je n'arrive pas à comprendre comment le faire. J'ai parcouru l'API pygtk et le web sans succès.Suppression par programmation d'une ligne PYGTK treeview

Si quelqu'un sait comment faire ceci ou un lien vers un site qui pourrait me donner un début de saut sur cette question, il serait grandement apprécié

Vive

Chris

Répondre

2

Vous pouvez changer le modèle sous-jacent, et accéder à n'importe quelle ligne par l'une de ses trois méthodes de référence. Say iter est le numéro de ligne:

model = gtk.TreeView.get_model() 
model.remove(iter) 

devrait faire l'affaire.

Mais vous ferez mieux de travailler immédiatement sur le listStore sans passer par l'arborescence, ce sera plus facile et plus rapide.

+0

Ceci est, bien qu'il devrait être noté qu'un iter sera une représentation interne d'une ligne, via poiter à la mémoire, alors qu'un chemin contiendra le numéro de ligne. Donc, s'il connaît le numéro de ligne, le chemin sera le chemin à parcourir. Mais, s'il traite de la suppression d'éléments, il aura besoin de référencer les itérateurs car les chemins et les itérations normales peuvent devenir invalides après le changement du contenu d'un modèle d'arbre. (juste quelques détails supplémentaires pour @Chris Lamb) –

+0

Merci Brandon, c'est vrai. Je pensais accéder à seulement la ligne (pas la cellule en se référant à la ligne et la colonne) donc je ne suis pas allé plus loin. En effet, lorsque le contenu a changé, le numéro de ligne (dans l'itérateur) change également. – Louis

Questions connexes