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

Tkinter Python Discussion :

MoveUp MoveDown sur item d'une ListView [Python 3.X]


Sujet :

Tkinter 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 MoveUp MoveDown sur item d'une ListView
    Bonjour,

    Je souhaite pouvoir déplacer les items de ma ListView, mais je ne sais pas du tout comment faire?

    Dans l'idée:

    -Sélectionner la ligne de ma ListView à bouger, (on récupère l'index de la ligne)
    -Bouton Up ou Down,

    Merci par avance

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 736
    Par défaut
    Salut,

    Vous avez posté dans le forum tkinter mais ListView n'est pas un widget de base...
    Et s'il s'agit d'une Listbox, il faut apprendre à utiliser les méthode .insert et .delete (ou poster le code que vous avez essayé)

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    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
    Je dirais même plus que c'est une TreeView

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 736
    Par défaut
    Citation Envoyé par Supernatural Voir le message
    Je dirais même plus que c'est une TreeView
    Eh bien vous cherchez dans votre documentation préférée(*), ce qui ressemble à .insert .delete pour ce widget là.... puis vous essayez de les faire marcher, et, si çà ne marche pas vous pourrez montrer le code que vous avez essayé.

    note: ce widget là a même une méthode .move.

    - W
    (*) c'est celle que je préfère, il y en a d'autres.
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    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
    Je suis parti sur le .move, donc:
    J'ai 2 boutons: 1 MoveUp et 1 MoveDown

    Je sélectionne mon item dans ma TreeView, je clique sur MoveUp ou MoveDown, mon item se décale :-)

    Voilà ce que j'ai fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
            #-------------------------------------------------------------------------------------------
            #-------------------------------------------------------------------------------------------
            def MoveUp():
                print('Move up kanban in list')
                curItem   = tree.focus()
                KANBAN_ID = tree.item(curItem)['text']
                print(tree.index)
                if KANBAN_ID!='':
                    print(KANBAN_ID)
                    tree.move(KANBAN_ID, '', KANBAN_ID-1)
                else:
                    messagebox.showerror("Erreur", "Veuillez séléctionner un kanban dans la liste!")
    Bon sans surprise j'ai une errreur lol:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      File "Kanban+.py", line 398, in MoveUp
        tree.move(KANBAN_ID, '', KANBAN_ID-1)
      File "C:\python_373\lib\tkinter\ttk.py", line 1394, in move
        self.tk.call(self._w, "move", item, parent, index)
    _tkinter.TclError: Item 6 not found

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 736
    Par défaut
    Salut,

    C'est bien joli çà mais dans tree.move(KANBAN_ID, '', KANBAN_ID-1)
    le premier argument doit être l'identifiant d'un item et c'est une chaine de caractères.

    Si vous voulez découvrir comment fonctionne un widget, il faut commencer "petit":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import tkinter as tk
    import tkinter.ttk as ttk
     
    tv = ttk.Treeview()
    for i in range(5):
        iid = tv.insert('', 'end', text=f'text-{i}')
        print (iid)
    tv.pack()
    tk.mainloop()
    puis vous pouvez ajouter un Button qui va, par exemple, essayer de déplacer l'item sélectionné vers le haut.
    Cela fait, vous allez pouvoir adapter le code pour qu'il soit plus facile à intégrer à votre programme.
    Enfin, vous allez pouvoir essayer de l'intégrer.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Androi Studio : Cliquer sur un Item d'une listView pour ouvrir une autre listViem
    Par souleymanemakan dans le forum Composants graphiques
    Réponses: 2
    Dernier message: 16/03/2017, 15h56
  2. Cliquer sur un item d'une listview pour lancer une nouvelle activité
    Par kopbuc dans le forum Composants graphiques
    Réponses: 14
    Dernier message: 31/01/2016, 12h46
  3. [VBA] événements souris sur un item d'une listview
    Par DJBORIE dans le forum VBA Access
    Réponses: 11
    Dernier message: 13/04/2007, 15h08
  4. Changer dynamiquement la couleur d'un item d'une listview
    Par little_cypress dans le forum C++Builder
    Réponses: 2
    Dernier message: 29/11/2004, 14h46

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