Aide widget ttk treeview

Résolu/Fermé
PAMONFRAN Messages postés 9 Date d'inscription dimanche 26 janvier 2020 Statut Membre Dernière intervention 16 mars 2020 - 26 janv. 2020 à 11:18
 trifou - 28 janv. 2020 à 14:49
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()
A voir également:

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.
0
bazfile Messages postés 53541 Date d'inscription samedi 29 décembre 2012 Statut Modérateur, Contributeur sécurité Dernière intervention 17 avril 2024 18 448
26 janv. 2020 à 16:23
Bonjour,
https://www.commentcamarche.net/forum/affich-36431969-merci-trifou
0
PAMONFRAN Messages postés 9 Date d'inscription dimanche 26 janvier 2020 Statut Membre Dernière intervention 16 mars 2020 1
27 janv. 2020 à 12:01
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 !
1
trifou > PAMONFRAN Messages postés 9 Date d'inscription dimanche 26 janvier 2020 Statut Membre Dernière intervention 16 mars 2020
28 janv. 2020 à 14:49
Bonjour PAMONFRAN,

Merci, c'est gentil =)
0