Aide widget ttk treeview
Résolu
PAMONFRAN
Messages postés
10
Statut
Membre
-
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.
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.