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 :

ListBox, sélection, ANCHOR et ACTIVE


Sujet :

Tkinter Python

  1. #1
    Membre éclairé Avatar de calogerogigante
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Par défaut ListBox, sélection, ANCHOR et ACTIVE
    Bonjour,

    Je suis en train d'étudier les divers modes de sélection dans une ListBox avec Tkinter. Je suis arrivé à faire le petit programme ci-dessous pour tester différentes façons de récupérer les sélections.

    Néanmoins, j'ai un soucis avec get(ACTIVE) index(ACTIVE) get(ANCHOR) et index(ANCHOR).

    Je n'arrive pas à bien définir que représente exactement ACTIVE et ANCHOR ? J'ai l'impression, au fur et à mesure que je sélectionne mes items dans la liste, que ANCHOR et ACTIVE me donnent des résultats aléatoires ?

    Active, c'est l'élément souligné, non ? Et Anchor, c'est quoi ?

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
    # -*- coding:utf-8 -*-
    from Tkinter import *
     
    root=Tk()
    root.geometry("400x400")
    root.title("ListBox Sélection - v.3")
     
    def focusSortie(event):
       print "\n------\nSortie de Focus"
    def focusEntree(event):
       print "\n------\nEntree de Focus"
    def focusSelection(event):
       laselection = lis.curselection()
       print "\n------\nSelection dans la listbox :"
       print "selection get(ACTIVE)   : ", lis.get(ACTIVE)
       print "selection index(ACTIVE) : ", lis.index(ACTIVE)
       print "selection get(ANCHOR) : ",   lis.get(ANCHOR)
       print "selection index(ANCHOR) : ", lis.index(ANCHOR)
       print "selection la liste : ",      laselection
    def selectionSingle():
        lis.select_clear(0,END)
        lis.config(selectmode=SINGLE)
        barreEtat.config(text="Sélection Single")
    def selectionBrowse():
        lis.select_clear(0,END)
        lis.config(selectmode=BROWSE)
        barreEtat.config(text="Sélection Browse")
    def selectionMultiple():
        lis.select_clear(0,END)
        lis.config(selectmode=MULTIPLE)
        barreEtat.config(text="Sélection Multiple")
    def selectionExtended():
        lis.select_clear(0,END)
        lis.config(selectmode=EXTENDED)
        barreEtat.config(text="Sélection Extended")
     
    frame = Frame(root, padx=20, pady=20)
    frame.pack(side=TOP, fill=BOTH, expand=1)
     
    bo1 = Button(frame, text="Sélection single",   command=selectionSingle)
    bo2 = Button(frame, text="Sélection browse",   command=selectionBrowse)
    bo3 = Button(frame, text="Sélection multiple", command=selectionMultiple)
    bo4 = Button(frame, text="Sélection extended", command=selectionExtended)
    scr = Scrollbar(frame)
    lis = Listbox(frame, selectmode=SINGLE, bg='ivory')
    barreEtat = Label(frame, text="Départ : single", bd=1, relief=SUNKEN, anchor=W)
     
    barreEtat.pack(side=BOTTOM, fill=X, pady=4)
    bo1.pack(side=TOP, fill=X, pady=4)
    bo2.pack(side=TOP, fill=X, pady=4)
    bo3.pack(side=TOP, fill=X, pady=4)
    bo4.pack(side=TOP, fill=X, pady=4)
    scr.pack(side=RIGHT, fill=Y)
    lis.pack(side=LEFT,  fill=BOTH, expand=1)
     
    scr.config(command=lis.yview)
    lis.config(yscrollcommand=scr.set)
     
    for i in range(30): 
       lis.insert(END, str(i)+"-"+str(i)+"-"+str(i))
     
    lis.bind("<FocusOut>", focusSortie)
    lis.bind("<FocusIn>", focusEntree)
    lis.bind("<<ListboxSelect>>", focusSelection)
     
    root.mainloop()
    Merci d'avance si vous pouvez m'aider à voir claire entre ACTIVE et ANCHOR...
    Images attachées Images attachées  

  2. #2
    Membre éclairé Avatar de calogerogigante
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Par défaut
    Bon, après quelques recherches et une analyse de mon petit programme, il semble que ANCHOR soit toujours ce qui a été sélectionné en dernier lieu (ligne bleue dans le ListBox).

    Par contre, ACTIVE est bcp plus subtil.

    J'ai remarqué un lien entre l'élément souligné de la ListBox et l'index affiché par index(ACTIVE). Mais il semble que quand on clique sur une ligne, cela ne rends pas ACTIVE cette ligne "durant le clic".

    C'est donc seulement après avoir relâché le bouton de la souris pour avoir sélectionné un élément, que celui-ci devient active. C'est pour cela qu'il semble y avoir souvent des inégalités entre index(ACTIVE) et index(ANCHOR).

    J'espère ne pas me tromper dans mon interprétation !

Discussions similaires

  1. ListBox Sélection multiple
    Par yonpo dans le forum VB.NET
    Réponses: 2
    Dernier message: 06/12/2010, 19h02
  2. Sélection de fenétre active ?
    Par MrThorr dans le forum Windows Forms
    Réponses: 7
    Dernier message: 24/02/2009, 11h37
  3. Style Listbox Sélection et Survol de la souris
    Par blaster681 dans le forum Windows Presentation Foundation
    Réponses: 11
    Dernier message: 06/11/2008, 10h16
  4. Boucler pour effacer des lignes dans une listbox à sélection multiple
    Par simond1 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 01/08/2008, 22h25
  5. Initialisation ListBox à sélections multiples
    Par vincentdu33 dans le forum C#
    Réponses: 1
    Dernier message: 26/07/2007, 09h54

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