IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Trier un Treeview après insert


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Touche à tout
    Inscrit en
    Mai 2017
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Touche à tout

    Informations forums :
    Inscription : Mai 2017
    Messages : 479
    Par défaut Trier un Treeview après insert
    Bonjour,

    J'alimente une TreeView avec la fonction '.insert()'. Ma TreeView à plusieurs colonnes, je voudrais que le tri ne se fasse que sur la colonne Date (de la plus récente à la plus ancienne).

    Je ne veux pas de fonction tri lorsque l'on clic sur le heading de la treeview. D'ailleurs j'ai un soucis avec ça car lorsque je double clic sur le heading je lance une fonction, or ne ne veux pas...

    Ci joint mon code:

    Ma treeview:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    tree_yscrollbar = Scrollbar(ListView_frame)
            tree_yscrollbar.pack(side=RIGHT, fill=Y)
     
            style = ttk.Style()
            style.configure("Treeview.Heading", font=('Courier new', 10))
            style.configure("Treeview", font=('Courier new', 10))
            tree["columns"] = ("Column_1","Column_2", "Column_3", "Column_4")
            tree.column("#0",       width=230, minwidth=0)
            tree.column("Column_1", width=175, minwidth=0)
            tree.column("Column_2", width=70,  minwidth=0)
            tree.column("Column_3", width=450, minwidth=0)
            tree.column("Column_4", width=150, minwidth=0)
            tree.heading("#0",       text="Nom",      anchor=tk.W)
            tree.heading("Column_1", text="Date",     anchor=tk.W)  
            tree.heading("Column_2", text="Taille",   anchor=tk.W)
            tree.heading("Column_3", text="Chemin",   anchor=tk.W)
            tree.heading("Column_4", text="Port FTP", anchor=tk.W)
            tree.pack(side=LEFT, expand=True, fill=BOTH)
            tree.bind('<Double-1>', lambda e: FTP_OpenSelectedFile())
            tree_yscrollbar.config(command=tree.yview)
    Ma fonction 'sort_treeview':
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def sort_treeview():
                content = [(tree.set(child, column), child) 
                                    for child in tree.get_children('')]
                try:
                    content.sort(key=lambda t: int(t[0]))
                except:
                    content.sort()
                for index, (val, child) in enumerate(content):
                    tree.move(child, '', index)
    Le remplissage de ma treeview:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for i in FilteredFiles:
                        DT_convertion(ftp, i)
                        tree.insert('', 'end', text=i, values=(DT_convertion(ftp, i), ftp.size(i), FTP_PATH+Cell_folder+'/'+i, PORT))
                        sort_treeview()
                        iFile +=1
    Merci par avance.

  2. #2
    Membre éclairé
    Homme Profil pro
    Touche à tout
    Inscrit en
    Mai 2017
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Touche à tout

    Informations forums :
    Inscription : Mai 2017
    Messages : 479
    Par défaut
    J'ai trouvé ^^ pour ceux que ça intéresse (il doit y avoir une solution plus rapide...) par contre j'ai toujours le problème de clic sur le heading de colonne...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    def sort_treeview():
         content = [(tree.set(child, "Column_1"), child) 
                                    for child in tree.get_children('')]
         try:
              content.sort(key=lambda t: int(t[0]))
         except:
              content.sort(reverse=True) #POUR AVOIR UN TRI INVERSE
         for index, (val, child) in enumerate(content):
              tree.move(child, '', index)

Discussions similaires

  1. [PowerBuilder] Prob. d'affichage après insertion de contrôle
    Par Oakenshield dans le forum Powerbuilder
    Réponses: 1
    Dernier message: 30/01/2006, 14h37
  2. Rafraichir dbgrid apres insertion d'une donnée ds une table
    Par gizmorambo dans le forum Bases de données
    Réponses: 7
    Dernier message: 11/01/2005, 16h03
  3. [VB.NET] [ADO.NET] Récupérer id après insertion
    Par nashouille dans le forum Accès aux données
    Réponses: 9
    Dernier message: 09/01/2005, 15h54
  4. récupérer valeur d'un ID après insertion
    Par rikidi dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/08/2003, 22h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo