Aide widget ttk treeview
Résolu
PAMONFRAN
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
trifou -
trifou -
Bonjour à tous !
Je débute en programmation python.
J'ai créé un widget treeview dont je voudrais récupérer la ligne sélectionnée à partir d'une fonction que j'ai créé. Mais j'ai beau tout essayé, cherché sur Google , aucune des réponses j'ai obtenues ne m'a satisfait.
Je souhaite s'il vous plaît recevoir si possible un coup de main pour avancer.
Merci.
Voici le code complet
#coding:utf-8
import tkinter as tk
from tkinter import ttk
from tkinter import *
app = tk.Tk()
app.geometry("780x250")
# Récupérer la sélection d'un treeview
def selectionElement(event):
select = tree.item(tree.selection())['values']
print(select)
Bselect = Button(app, text = "élément sélectionné")
Bselect.bind("<<Button−1>>", selectionElement)
Bselect.pack()
lblframetree = tk.LabelFrame(app, text="Liste des enregistrements", padx=5, pady=5)
lblframetree.pack(fill="x")
# création du widget TreeView en indiquant les identifiants des colonnes
tree = ttk.Treeview(lblframetree, columns = (1 ,2 ,3 ,4,5,6) , height = 7, show = "headings", selectmode = "browse")
tree.grid(row = 0, column = 0, rowspan = 5, columnspan = 10, sticky="NSEW")
# ajout de barre de défilement
scroll = ttk.Scrollbar(lblframetree, orient = "vertical" , command = tree.yview)
scroll.grid(row = 0, column =10, rowspan = 5, sticky = "NSEW")
tree.configure(yscrollcommand = scroll.set)
# définition des dimensions des colonnes
tree.column(1, width = 100, anchor = "center")
tree.column(2, width = 150, anchor = "center")
tree.column(3, width = 150, anchor = "center")
tree.column(4, width = 70, anchor = "center")
tree.column(5, width = 120, anchor = "center")
tree.column(6, width = 120, anchor = "center")
# définition de l'entête de l'objet TreeView
tree.heading(1, text="Matricule")
tree.heading(2, text="Nom")
tree.heading(3, text="Prénom")
tree.heading(4, text="Sexe")
tree.heading(5, text="Date de naissance")
tree.heading(6, text="Lieu de naissance")
# === Insertion des données ===
tree.insert ("", "end", values = (1, "Albert", "albert@gmail .com","Homme", "20/02/1990", "Londres"))
tree.insert ("", "end", values = (2, "Majid", "majid@gmail .com","Femme", "20/02/1990", "Londres"))
tree.insert ("", "end", values = (3, "Natalie", "natalie@gmail .com","Homme", "20/02/1990", "Londres"))
tree.insert ("", "end", values = (4, "Albert", "albert@gmail .com","Homme", "20/02/1990", "Londres"))
tree.insert ("", "end", values = (5, "Majid", "majid@gmail .com","Homme", "20/02/1990", "Londres"))
tree.insert ("", "end", values = (6, "Natalie", "natalie@gmail .com","Homme", "20/02/1990", "Londres"))
tree.insert ("", "end", values = (7, "Albert", "albert@gmail .com","Homme", "20/02/1990", "Londres"))
tree.insert ("", "end", values = (8, "Majid", "majid@gmail .com","Femme", "20/02/1990", "Londres"))
tree.insert ("", "end", values = (9, "Natalie", "natalie@gmail .com","Femme", "20/02/1990", "Londres"))
app.mainloop()
Je débute en programmation python.
J'ai créé un widget treeview dont je voudrais récupérer la ligne sélectionnée à partir d'une fonction que j'ai créé. Mais j'ai beau tout essayé, cherché sur Google , aucune des réponses j'ai obtenues ne m'a satisfait.
Je souhaite s'il vous plaît recevoir si possible un coup de main pour avancer.
Merci.
Voici le code complet
#coding:utf-8
import tkinter as tk
from tkinter import ttk
from tkinter import *
app = tk.Tk()
app.geometry("780x250")
# Récupérer la sélection d'un treeview
def selectionElement(event):
select = tree.item(tree.selection())['values']
print(select)
Bselect = Button(app, text = "élément sélectionné")
Bselect.bind("<<Button−1>>", selectionElement)
Bselect.pack()
lblframetree = tk.LabelFrame(app, text="Liste des enregistrements", padx=5, pady=5)
lblframetree.pack(fill="x")
# création du widget TreeView en indiquant les identifiants des colonnes
tree = ttk.Treeview(lblframetree, columns = (1 ,2 ,3 ,4,5,6) , height = 7, show = "headings", selectmode = "browse")
tree.grid(row = 0, column = 0, rowspan = 5, columnspan = 10, sticky="NSEW")
# ajout de barre de défilement
scroll = ttk.Scrollbar(lblframetree, orient = "vertical" , command = tree.yview)
scroll.grid(row = 0, column =10, rowspan = 5, sticky = "NSEW")
tree.configure(yscrollcommand = scroll.set)
# définition des dimensions des colonnes
tree.column(1, width = 100, anchor = "center")
tree.column(2, width = 150, anchor = "center")
tree.column(3, width = 150, anchor = "center")
tree.column(4, width = 70, anchor = "center")
tree.column(5, width = 120, anchor = "center")
tree.column(6, width = 120, anchor = "center")
# définition de l'entête de l'objet TreeView
tree.heading(1, text="Matricule")
tree.heading(2, text="Nom")
tree.heading(3, text="Prénom")
tree.heading(4, text="Sexe")
tree.heading(5, text="Date de naissance")
tree.heading(6, text="Lieu de naissance")
# === Insertion des données ===
tree.insert ("", "end", values = (1, "Albert", "albert@gmail .com","Homme", "20/02/1990", "Londres"))
tree.insert ("", "end", values = (2, "Majid", "majid@gmail .com","Femme", "20/02/1990", "Londres"))
tree.insert ("", "end", values = (3, "Natalie", "natalie@gmail .com","Homme", "20/02/1990", "Londres"))
tree.insert ("", "end", values = (4, "Albert", "albert@gmail .com","Homme", "20/02/1990", "Londres"))
tree.insert ("", "end", values = (5, "Majid", "majid@gmail .com","Homme", "20/02/1990", "Londres"))
tree.insert ("", "end", values = (6, "Natalie", "natalie@gmail .com","Homme", "20/02/1990", "Londres"))
tree.insert ("", "end", values = (7, "Albert", "albert@gmail .com","Homme", "20/02/1990", "Londres"))
tree.insert ("", "end", values = (8, "Majid", "majid@gmail .com","Femme", "20/02/1990", "Londres"))
tree.insert ("", "end", values = (9, "Natalie", "natalie@gmail .com","Femme", "20/02/1990", "Londres"))
app.mainloop()
1 réponse
Bonjour,
Pour associer un clic sur un bouton à une fonction, il faut utiliser le paramètre command.
Si tu souhaites qu'un clic sur une ligne du treview appelle ta fonction, alors supprime ton bouton qui devient caduque, et utilise un event sur le treeview.
A mettre bien entendu après la déclaration de tree.
Pour associer un clic sur un bouton à une fonction, il faut utiliser le paramètre command.
Bselect = Button(app, text = "élément sélectionné", command=selectionElement) Bselect.pack()
Si tu souhaites qu'un clic sur une ligne du treview appelle ta fonction, alors supprime ton bouton qui devient caduque, et utilise un event sur le treeview.
tree.bind("<<TreeviewSelect>>", selectionElement)
A mettre bien entendu après la déclaration de tree.
https://www.commentcamarche.net/forum/affich-36431969-merci-trifou
j'ai adopté ta recommandation qui consiste à associer l'événement au treeview et ça a marché du coup.
Je tiens vraiment à te remercier sincèrement de ton aide si précieuse..
Une fois en core merci !
Merci, c'est gentil =)