Aide widget ttk treeview [Résolu]

Signaler
Messages postés
5
Date d'inscription
dimanche 26 janvier 2020
Statut
Membre
Dernière intervention
22 février 2020
-
 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()

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.
bazfile
Messages postés
24086
Date d'inscription
samedi 29 décembre 2012
Statut
Modérateur, Contributeur sécurité
Dernière intervention
22 février 2020
7 206
PAMONFRAN
Messages postés
5
Date d'inscription
dimanche 26 janvier 2020
Statut
Membre
Dernière intervention
22 février 2020

Bonjour 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 !
> PAMONFRAN
Messages postés
5
Date d'inscription
dimanche 26 janvier 2020
Statut
Membre
Dernière intervention
22 février 2020

Bonjour PAMONFRAN,

Merci, c'est gentil =)