Comment faire de ttk.Treeview lignes modifiables?
Est-il possible d'utiliser ttk Treeview avec modifiables lignes?
Je veux dire, il doit travailler plus comme une table. Par exemple sur le double clic sur le point de faire le #0 de la colonne 'modifiable'.
Si ce n'est pas possible, de toute façon à permettre à la souris en sélectionnant sur l'article serait parfait. Je n'ai trouvé aucune mention de cela dans tkdocs ou d'autres documents.
- J'ai développé une façon de cliquer sur une cellule dans un treeview et de créer un champ en haut de l'cliqué cellule de sorte que la valeur de la cellule pourrait être modifié. Cependant, l'un de l'arborescence des méthodes que j'ai utilisé pour tirer cette off ne fonctionne que sur mon Mac, mais pas sur Windows. Ce qui est étrange, c'est que techniquement c'est pas censé le même travail pour le Mac, et pourtant, il ne. Vous n'avez pas de liste de votre plate-forme, mais si vous êtes sur un Mac (et de ne pas exécuter le code sur Windows), laissez-moi savoir et je vais poster une réponse avec les détails.
- J'ai fait la même chose et il fonctionne à la fois linux et windows, je n'ai pas de chance de l'essayer sur Mac. Je n'ai pas à rendre le texte modifiable en fait, j'ai fait le widget Entry readonly. Donc, si votre Mac seule solution' a un problème avec l'affichage de l'Entrée de popup, peut-être que ma solution pourrait vous inspirer. Voir ma réponse à cette question pour l'exemple de code.
- J'ai couru dans les mêmes limites, principalement à l'aide de l'Arborescence pour imiter une table car il n'y a pas de table-comme widget tkinter/ttk. Si vous n'êtes pas à l'aide de l'Arborescence comme un "arbre" vous pouvez essayer de tkintertable (code.google.com/p/tkintertable). Il permet essentiellement fonctionnalités de feuille de calcul et est relativement bien documenté et est assez riche en fonctionnalités.
Vous devez vous connecter pour publier un commentaire.
Après de longues recherches je n'ai pas trouvé cette fonctionnalité, donc je pense qu'il y a de tout. Les savoirs traditionnels sont interface très simple, qui permet au programmeur de construire de haut niveau de fonctionnalités de la base. Donc, mon comportement souhaité de cette façon.
C'est une méthode dans une classe qui compose ttk.Treeview que soi._tree
Et EntryPopup est alors très simple de la sous-classe d'Entrée:
identify_region
pour déterminer où l'utilisateur a cliqué dans le treeview, et seulement l'affichage d'un champ de saisie si l'utilisateur a cliqué dans une cellule. Les docs que j'ai été d'abord à l'aide de dit rien au sujet de cette méthode ne fonctionne qu'en Tk 8.6 et plus, alors j'ai essayé. Miraculeusement, il a travaillé...sur mon Mac. Il n'était pas jusqu'à ce qu'il a déclenché une exception sur mon client du système de Windows que j'ai découvert que Python Tkinter, et ttk modules utilisent actuellement Tk 8.5. Pourquoi faut-il travailler pour moi? Aucune idée. En tout cas, vous m'avez donné quelques idées sur la façon de le résoudre. Merci!Vous pouvez également afficher une fenêtre de l'outil avec les champs modifiables répertoriés avec des Entrées de mettre à jour les valeurs. Cet exemple a un treeview avec trois colonnes, et de ne pas utiliser les sous-classes.
Lier votre double-cliquez pour cela:
Puis validez les modifications:
Voici comment faire pour supprimer une entrée:
Je ne sais pas à propos de faire de la ligne modifiable, mais à la capture en cliquant sur une ligne, vous utilisez le
<<TreeviewSelect>>
événement virtuel. Cela est lié à une routine avec l'bind()
méthode, puis vous utilisez laselection()
méthode pour obtenir les id des éléments sélectionnés.Ce sont extraits à partir d'un programme existant, mais de montrer la séquence de base de l'appel:
C'est juste pour la création d'un arbre pour le chemin d'accès spécifié est défini dans le constructeur. vous pouvez lier votre événement à votre article sur cet arbre. La fonction d'événement est à gauche, de manière que l'élément peut être utilisé de plusieurs façons. Dans ce cas, il affichera le nom de l'élément lors d'un double clic dessus. Espérons que cela aide quelqu'un.