Fonction insert d'un treeview qui ne fonctionne pas

Fermé
Tom13190 - 26 mars 2022 à 14:54
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 - 28 mars 2022 à 11:19
Bonjour à tous,

j'a le problème suivant qui me pose du souci depuis quelques jours:

Je crée une frame sous tkinter. Dans un fichier parallèle, j'ai créé une fonction qui crée des treeview avec quelques paramètres.
Au chargement de la page principale, les différents treeview sont créés (avec la fonction) avec les bons noms de colonne. Jusque là tout va bien...

Sur ma frame principale, j'ai créé un bouton qui récupère des données depuis des entrys ou des radiobutton et remplit avec mes différents treviews.
Et là , sans aucun message d'erreur, rien ne se passe.

Voici le bout de code qui pose probléme:

ossature_data.insert('','end',values=(n_fp_oss,type_rail,"3",int(n_rail)))


J'ai vérifié que le tuple de valeuirs soient correct et que le treeview existe bien . Tout ça , c'est bon.

Auriez vous une idée de là où ça coince?

Merci pour vos réponses

5 réponses

Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 26 mars 2022 à 17:42
Bonjour,

Avec le code complet, ce serait mieux
Et avec les balises:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0
Voici la fonction qui crée le treeview:

def treeview_init(nom:ttk.Treeview,parent_name:ttk.Widget,data_columns:dict):

    kolumns=[]    
    style1 = ttk.Style()
    style1.layout("style1", [('style1', {'sticky': 'nswe'})])
       
    for key in data_columns:
        kolumns.append(key)
        
    nom = ttk.Treeview(parent_name, columns=kolumns, show='headings', style="style1")
    nom.place(x=0, y=0, width=parent_name.winfo_width(), height=parent_name.winfo_height())

    for key in data_columns:
        if key=="Num":
            nom.column(key, anchor=CENTER,width=10)
        else:
            nom.column(key, anchor=CENTER,width=80)
    
    for key in data_columns:
        nom.heading(key,text=data_columns[key], anchor=CENTER)
        
    nom.place    

    vscroll1 = ttk.Scrollbar(nom)
    vscroll1.configure(command=nom.yview)
    nom.configure(yscrollcommand=vscroll1.set)
    vscroll1.pack(side=RIGHT, fill=BOTH)
    nom.place


Ensuite, je crée le treeview dans ma frame de cette façon:

ossature_data=ttk.Treeview()
treeview_init(ossature_data,ossature_lblf, Num":"#","Type_ossature":"Type","Longueur_ossature":"Longueur (m)","Nombre_ossature":"Nbre"})


Et jeremplis le treeview de cette façon lorsque que je clique sur un bouton:

 ossature_data.insert('','end',values=(n_fp_oss,type_rail,"3",int(n_rail)))


Est ce assez détaillé?
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 27 mars 2022 à 20:08
Bonjour,

Déjà, moi, en exécutant ton code, j'ai une erreur de syntaxe ici:
treeview_init(ossature_data,main_win, Num":"#","Type_ossature":"Type","Longueur_ossature":"Longueur (m)","Nombre_ossature":"Nbre"}


Num":"#"
0
En effet, c'est

"Num":"#"
0
Je n'avais pas cette erreur dans mon code...Bizarre. Peut être un problème au copier-coller.
Du coup, même avec cette correction ça ne marche pas et je n'ai aucun message d'erreur
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 28 mars 2022 à 11:36
Bonjour,

Avec la correction :


Sinon, tu crée 2 tree view, c'est normal ?? :

ossature_data=ttk.Treeview()


Et ensuite, tu appelles ta fonction treeview_init, et dedans :

nom = ttk.Treeview(..................


A tout hasard, ci-dessous un code simple et qui fonctionne avec le minimum à mettre en œuvre pour un tree view,
teste-le et compare avec ton code pour essayer de comprendre ce qui ne va pas:
import tkinter as tk
from tkinter import ttk

main_win = tk.Tk()
main_win.title('Treeview demo')
main_win.geometry('620x250')

_columns = ('first_name', 'last_name', 'email')

tree = ttk.Treeview(main_win, columns=_columns, show='headings')
tree.heading('first_name', text='First Name')
tree.heading('last_name', text='Last Name')
tree.heading('email', text='Email')
tree.grid(row=0, column=0, sticky='nsew')

# generation des données
contacts = []
for n in range(1, 100): contacts.append((f'first {n}', f'last {n}', f'email{n}@example.com'))

# insertion des données
for contact in contacts: tree.insert('', tk.END, values=contact)

scrollbar = ttk.Scrollbar(main_win, orient=tk.VERTICAL, command=tree.yview)
tree.configure(yscroll=scrollbar.set)
scrollbar.grid(row=0, column=1, sticky='ns')

main_win.mainloop()
0