Fonction insert d'un treeview qui ne fonctionne pas

Tom13190 -  
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

5 réponses

Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168
 
Bonjour,

Avec le code complet, ce serait mieux
Et avec les balises:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0
Tom13190
 
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   Statut Membre Dernière intervention   168
 
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
Tom13190
 
En effet, c'est

"Num":"#"
0
Tom13190
 
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   Statut Membre Dernière intervention   168
 
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