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

GUI Python Discussion :

Comment supprimer le focus sur une listbox quand le curseur de la souris n'y est plus [Python 3.X]


Sujet :

GUI Python

  1. #1
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2013
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 91
    Par défaut Comment supprimer le focus sur une listbox quand le curseur de la souris n'y est plus
    J'ai écrit une maquette d'utilisation d'une Listebox avec un Scrollbarr que j'utiliserai dans un programme de gestion de photos de fleurs.
    Je choisirai la photo à visualiser via la selection effectuée dans la listebox.
    Je veux aller au début de la listbox et à la fin par les touches <Shift-Up> et <Shift-Down> que lorsque le curseur de la souris est sur la listbox.
    La maquette fonctionne bien, sauf lorsque le curseur est hors de la listbox, les <Shift-Up> et <Shift-Down> étant toujours opérantes.
    Voici ma maquette
    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    import tkinter as tk
    class UtilisationListbox(tk.Tk):
        '''
        Exemle d'utilisation d'une Listbox liée à un scrollbar vertical
        C'est une application de l'utilisation des méthodes after et after_cancel
        pour la sélection à la volée d'une ligne de la Listbox avec lancement d'une
        méthode paramérée avec la sélection
        '''
        def __init__(self,parent=None):
            tk.Tk.__init__(self,parent)
     
            self.sel=() #sert pour initier le if dans la méthode ParcourirListbox
     
            self.F1=tk.Frame(self)             #Création du Frame contenant la Listbox et le Scrollbar
            self.s=tk.Scrollbar(self.F1)       #Création du Scrollbar
            self.L=tk.Listbox(self.F1)         #Création de la Listbox
            for i in range(30):                #Remplissage de la Listbox
                self.L.insert(tk.END,str(i))
     
            self.L.selection_set(0) #selectionne la ligne 1 de la Listbox
            self.L.activate(0) #Active la ligne 1 de la Listebox
            self.L.configure(state='disabled') #Désactive la sélection relativement à la souris
     
            #Lient la Listebox à différents évènements
            self.L.bind('<Enter>',lambda evt: self.ParcourirListbox())       #Le curseur entre sur la Listbox
            self.L.bind('<Leave>',lambda evt: self.NePlusParcourirListbox()) #Le curseur dort de la Listebox
            self.L.bind('<Shift-Up>',self.AllerEnHaut)                       #Sélectionne la première ligne de la Listbox
            self.L.bind('<Shift-Down>',self.AllerEnBas)                      #Sélectionne la dernière ligne de la Listbox
     
            #Positionnement de et dans la Frame contenant la Listbox et le scrollbarr
            self.F1.pack(side=tk.TOP)      
            self.s.pack(side=tk.RIGHT,fill=tk.Y)
            self.L.pack(side=tk.LEFT,fill=tk.Y)
     
            #Liaison entre la Listbox et le Scrollbarr
            self.L['yscrollcommand']=self.s.set
            self.s['command']=self.L.yview  
     
            #Création de la Frame et du Label contenant le résultat de la sélection
            self.F2=tk.Frame()
            self.lab=tk.Label(self.F2)
     
            #Positionnement de et dans la Frame contenant le label
            self.F2.pack(side=tk.TOP)
            self.lab.pack()
     
        def ParcourirListbox(self):
            #Le curseur rentre dans la Listbox
            self.L.configure(state='normal') #Active la sélection de la Listbox relativement à la souris
            #Initie la commande after qui permet d'attendre 200ms avant de selectionner la ligne en cours de la Listbox
            self.p=self.lab.after(200,self.ParcourirListbox)
            if self.L.curselection()!=self.sel: #Vérifie si la sélection à changer
                self.sel=self.L.curselection()
                self.lab.config(text=str(self.sel[0]))
                self.LancerProgramme(self.sel) #Lance un programme utilisant la nouvelle sélection
     
        def NePlusParcourirListbox(self):
            #Le curseur sort de la Listbox
            self.L.configure(state='disabled') #Désactivation de la Listbox relativement à la souris
            self.lab.after_cancel(self.p) #Suppression de l'instance after en cours
            self.L.unbind_all('<Shift-Up>,<Shift-Down>') #Suppressin des liaisons
     
        def LancerProgramme(sel,x):
            #Lance le programme lors d'une nouvelle sélection
            print("Programme lancé avec",x)
     
        def AllerEnHaut(self,evt):
            '''
            Sélectionne la première ligne de la sélection lors de l'appuie
            conjoint des touches "Shift" et "Flèche haut"
            '''
            if self.focus_get()==self.L:
                print(self.focus_get(),evt.widget)
                self.L.selection_clear(0,tk.END) #Désélection de la ligne sélectionnée
                self.L.activate(0) #Activation de la première ligne
                self.L.selection_set(0) #Sélection de la première ligne
                self.L.see(0) #Visualisation de la première ligne
     
        def AllerEnBas(self,evt):
            '''
            Sélectionne la dernière ligne de la sélection lors de l'appuie
            conjoint des touches "Shift" et "Flèche bas"
            '''        
            self.L.selection_clear(0,tk.END) #Désélection de la ligne sélectionnée
            self.L.activate(tk.END) #Activation de la dernière ligne
            self.L.selection_set(tk.END) #Sélection de la dernière ligne
            self.L.see(tk.END) #Visualisation de la dernière ligne    
     
    if __name__=="__main__":
        test=UtilisationListbox(None)
        test.title("Test after dans une classe")
        test.mainloop()
    J'ai essayé la méthode self.L.unbind_all('<Shift-Up>,<Shift-Down>') (ligne 61) mais ça ne fonctionne pas
    J'ai également essayé if self.focus_get()==self.L: dans méthode AllerEnHaut(self,evt) (ligne 72), mais la listbox L a toujours le focus!

    Merci de vos idées pour me dépanner

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Citation Envoyé par Cemalatowilo Voir le message
    J'ai également essayé if self.focus_get()==self.L: dans méthode AllerEnHaut(self,evt) (ligne 72), mais la listbox L a toujours le focus!
    Ben la fonction get n'est pas censée supprimer le focus, non ???

    Il faudrait savoir si il existe une fonction qui enlevè le focus...

    Sinon tu peux faire perdre le focus à la listBox en le donnant à un autre windjet (par exemple la fenêtre principale ?)...

    Mais pourquoi ne pas juste cliquer ailleurs que la listbox pour que ce dernier perde le focus ? Tu veux que cela se fasse automatiquement c'est ça ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2013
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 91
    Par défaut
    Ce que je recherche avant tout c'est que les touches <Shift-Up> et <Shift-Down> ne fonctionnent plus quand le curseur n'est plus sur la Listbox.
    Ce n'est peut être pas un problème de focus sur la Listbox

  4. #4
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2013
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 91
    Par défaut
    Et pour répondre correctement à ta question, il faut que se soit de manière automatique

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Citation Envoyé par Cemalatowilo Voir le message
    Ce que je recherche avant tout c'est que les touches <Shift-Up> et <Shift-Down> ne fonctionnent plus quand le curseur n'est plus sur la Listbox.
    Ce n'est peut être pas un problème de focus sur la Listbox
    Ben je t'ai donné une idée : "Sinon tu peux faire perdre le focus à la listBox en le donnant à un autre windjet (par exemple la fenêtre principale ?)..." (c'est dans le cas où il n'existerait pas de fonction toute faite pour cela).

    Et si, quelque part c'est bien lié au focus car si la listbox n'a plus le focus les touches en question n'auront plus d'effet...

    Comme tu veux que cela ait lieu quand le curseur n'est plus sur la Listbox, tu peux utiliser mon idée par exemple dans ta fonction NePlusParcourirListbox...

    Tu peux ajouter dans cette fonction ceci par exemple : self.F1.focus_force()...

  6. #6
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2013
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 91
    Par défaut
    Merci,
    j'ai testé ton idée et ça fonctionne.
    Il ne me reste plus qu'un problème:
    Lorsque le curseur revient dans la listbox, la dernière ligne sélectionnée est ebien en surbrillance,
    mais elle n'est pas véritablement sélectionnée car les flèche <Up>, <Down>, <Shift-Up> et Shift-Down> ne fonctionnent pas.
    Pour que je puisse naviguer de nouveau dans listbox il faut que je clique gauche sur une ligne!

    Cela doit venir du fait que je n'ai pas les idées claires sur les différences entre self.L.selection_set(N°ligne), sel.L.activate(N° ligne) et que j'ignore quelqu'autre méthode.

    As tu une idée?

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Citation Envoyé par Cemalatowilo Voir le message
    Pour que je puisse naviguer de nouveau dans listbox il faut que je clique gauche sur une ligne!
    Tant que la Listbox n'a pas le focus, les évènements ne seront pas traités par elle... Et avoir le focus, c'est un peu plus que la souris qui se balade au dessus du widget. En çà c'est par défaut sinon il faut peut être regarder focusfollowmouse)

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

  8. #8
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Citation Envoyé par Cemalatowilo Voir le message
    j'ai testé ton idée et ça fonctionne.
    Ben tant mieux...


    Citation Envoyé par Cemalatowilo Voir le message
    Cela doit venir du fait que je n'ai pas les idées claires sur les différences entre self.L.selection_set(N°ligne), sel.L.activate(N° ligne) et que j'ignore quelqu'autre méthode.

    As tu une idée?
    Ben moi non plus je ne maitrise pas tkinter, a vrai dire je débute même en Python... Mais il y a une certaine logique qu'on retrouve ailleurs dans d'autres langages donc je m'en sert...

    Mais oui j'ai une idée et on revient d'ailleurs au même problème que celui de ton autre fil :

    Citation Envoyé par Cemalatowilo Voir le message
    Il ne me reste plus qu'un problème:
    Lorsque le curseur revient dans la listbox, la dernière ligne sélectionnée est ebien en surbrillance,
    mais elle n'est pas véritablement sélectionnée car les flèche <Up>, <Down>, <Shift-Up> et Shift-Down> ne fonctionnent pas.
    Pour que je puisse naviguer de nouveau dans listbox il faut que je clique gauche sur une ligne!
    Je disais donc même problème ---> même solution : il suffit d'utiliser self.L.focus_force() (ou self.L.focus()) dans ta fonction ParcourirListbox...

  9. #9
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Ah ben je n'avais pas vu la réponse de wiztricks, sa réponse répond peut-être aussi au problème de l'autre fil : Problème avec le focus sur une listbox

  10. #10
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2013
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 91
    Par défaut
    OK, merci pour vos réponses
    J'ai forcé le focus sur la listebox quand je rentre sur la listbox et ça fonctionne.
    Je pensais que le focus est automatiquement fixé sue le widget où se trouve la souris!

    Par contre j'ai découvert un autre pb:
    Quand je parcours ma listbox avec le scrollbar, je perd ma ligne sélectionnée (qui se trouve en surbrillance)
    Comment la garder en surbrillance quand j'agis sur l'ascenseur?

  11. #11
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Citation Envoyé par Cemalatowilo Voir le message
    J'ai forcé le focus sur la listebox quand je rentre sur la listbox et ça fonctionne.
    Tu as essayé focusfollowmouse ou bien self.L.focus_force() (ou self.L.focus()) dans ta fonction ParcourirListbox ?

    Citation Envoyé par Cemalatowilo Voir le message
    Je pensais que le focus est automatiquement fixé sue le widget où se trouve la souris!
    Ben justement tu as constaté toi-même que lorsque le curseur est hors de la listbox les touches étaient toujours pris en compte et pour qu'elles n'est plus d'effet il a fallut faire perdre le focus à la listbox...

    Mais apparemment comme l'a indiqué wiztricks il y a focusfollowmouse pour faire ce que tu veux...

    Citation Envoyé par Cemalatowilo Voir le message
    Par contre j'ai découvert un autre pb:
    Quand je parcours ma listbox avec le scrollbar, je perd ma ligne sélectionnée (qui se trouve en surbrillance)
    Comment la garder en surbrillance quand j'agis sur l'ascenseur?
    Je vais tester pour voir...

    EDIT : J'ai vu qu’apparemment c'est toi qui désactive (avec self.L.configure(state='disabled')) la ligne sélectionnée quand la souris ne survole plus la listebox or l'ascenseur ne fait pas partie de la listbox...

    N'y a-t-il pas moyen d'associer l’ascenseur à la listbox plutôt qu'à la frame ?

  12. #12
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Citation Envoyé par Beginner. Voir le message
    EDIT : J'ai vu qu’apparemment c'est toi qui désactive (avec self.L.configure(state='disabled')) la ligne sélectionnée quand la souris ne survole plus la listebox or l'ascenseur ne fait pas partie de la listbox...

    N'y a-t-il pas moyen d'associer l’ascenseur à la listbox plutôt qu'à la frame ?
    Si tu veux laisser ton code avec l’ascenseur associé à la Frame alors tu peux ajouter ça :

    self.s.bind('<Enter>', lambda evt: self.normal())
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def normal(self):
        self.L.configure(state="normal")
    Mais bon ça commence à être du bricolage...

  13. #13
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2013
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 91
    Par défaut
    Bonsoir tout le monde,
    J'ai utilisé self.L.focus() et sa fonctionne correctement

    J'ai supprimé self.L.configure(state='disabled') dans "NePlusParcourirListbox", mais j'ai gardé self.L.configure(state='normal') dans "ParcourirListbox" , sinon cela ne fonctionne pas.
    Mais je pensais avoir répondu sur ce point hier soir, j'ai du me tromper dans l'envoie de ma réponse!

    Par contre je ne comprends pas ta remarque sur l'ascenseur lié à la frame, car dans mon code il ya d'écrit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            self.L=tk.Listbox(self.F1)         #Création de la Listbox
            self.s=tk.Scrollbar(self.F1)        #Création du Scrollbar
    ...
            #Liaison entre la Listbox et le Scrollbarr
            self.L['yscrollcommand']=self.s.set
            self.s['command']=self.L.yview
    Je pensais que c'était de cette manière de lier un ascenseur à une Listebox
    comment faut-il procéder?

    Hier ssoir j'avais mis mon programme finalisé dans ma réponse qui semble ne pas être partie.
    Je vous le soumets de nouveau pour avis (peut-on l'améliorer?)
    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    import tkinter as tk
    class UtilisationListbox(tk.Tk):
        '''
        Exemle d'utilisation d'une Listbox liée à un scrollbar vertical
        C'est une application de l'utilisation des méthodes after et after_cancel
        pour la sélection à la volée d'une ligne de la Listbox avec lancement d'une
        méthode paramérée avec la sélection
        '''
        def __init__(self,parent=None):
            tk.Tk.__init__(self,parent)
            self.geometry("450x200+50+100")
            self.sel=() #sert pour initier le if dans la méthode ParcourirListbox
     
            self.F1=tk.Frame(self)             #Création du Frame contenant la Listbox et le Scrollbar
            self.s=tk.Scrollbar(self.F1)       #Création du Scrollbar
            self.L=tk.Listbox(self.F1)         #Création de la Listbox
            for i in range(30):                #Remplissage de la Listbox
                self.L.insert(tk.END,str(i))
     
            self.L.selection_set(0) #selectionne la ligne 1 de la Listbox
            self.L.configure(state='disabled') #Désactive la sélection relativement à la souris
     
            #Lient la Listebox à différents évènements
            self.L.bind('<Enter>',lambda evt: self.ParcourirListbox())       #Le curseur entre sur la Listbox
            self.L.bind('<Leave>',lambda evt: self.NePlusParcourirListbox()) #Le curseur dort de la Listebox
            self.L.bind('<Shift-Up>',self.AllerEnHaut)                       #Sélectionne la première ligne de la Listbox
            self.L.bind('<Shift-Down>',self.AllerEnBas)                      #Sélectionne la dernière ligne de la Listbox
     
            #Positionnement de et dans la Frame contenant la Listbox et le scrollbarr
            self.F1.pack(side=tk.TOP)      
            self.s.pack(side=tk.RIGHT,fill=tk.Y)
            self.L.pack(side=tk.LEFT,fill=tk.Y)
     
            #Liaison entre la Listbox et le Scrollbarr
            self.L['yscrollcommand']=self.s.set
            self.s['command']=self.L.yview  
     
            #Création de la Frame et du Label contenant le résultat de la sélection
            self.F2=tk.Frame()
            self.lab=tk.Label(self.F2)
     
            #Positionnement de et dans la Frame contenant le label
            self.F2.pack(side=tk.TOP)
            self.lab.pack()
     
        def ParcourirListbox(self):
            #Le curseur rentre dans la Listbox
            self.L.focus() #Donne le focus à la listbox
            self.L.configure(state='normal') #Active la sélection de la Listbox relativement à la souris
            #Initie la commande after qui permet d'attendre 200ms avant de selectionner la ligne en cours de la Listbox
            self.p=self.lab.after(200,self.ParcourirListbox)
            if self.L.curselection()!=self.sel: #Vérifie si la sélection à changer
                self.sel=self.L.curselection()
                self.lab.config(text=str(self.sel[0]))
                self.LancerProgramme(self.sel) #Lance un programme utilisant la nouvelle sélection
     
        def NePlusParcourirListbox(self):
            #Le curseur sort de la Listbox
            self.F2.focus()
            self.lab.after_cancel(self.p) #Suppression de l'instance after en cours
     
        def LancerProgramme(sel,x):
            #Lance le programme lors d'une nouvelle sélection
            print("Programme lancé avec",x)
     
        def AllerEnHaut(self,evt):
            '''
            Sélectionne la première ligne de la sélection lors de l'appuie
            conjoint des touches "Shift" et "Flèche haut"
            '''
            self.L.selection_clear(0,tk.END) #Désélection de la ligne sélectionnée
            self.L.activate(0) #Activation de la première ligne
            self.L.selection_set(0) #Sélection de la première ligne
            self.L.see(0) #Visualisation de la première ligne
     
        def AllerEnBas(self,evt):
            '''
            Sélectionne la dernière ligne de la sélection lors de l'appuie
            conjoint des touches "Shift" et "Flèche bas"
            '''        
            self.L.selection_clear(0,tk.END) #Désélection de la ligne sélectionnée
            self.L.activate(tk.END) #Activation de la dernière ligne
            self.L.selection_set(tk.END) #Sélection de la dernière ligne
            self.L.see(tk.END) #Visualisation de la dernière ligne    
     
    if __name__=="__main__":
        test=UtilisationListbox(None)
        test.title("Exemple d'utlisation de after pour parcourir une liste")
        test.mainloop()

  14. #14
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Citation Envoyé par Cemalatowilo Voir le message
    Bonsoir tout le monde,
    J'ai utilisé self.L.focus() et sa fonctionne correctement

    J'ai supprimé self.L.configure(state='disabled') dans "NePlusParcourirListbox", mais j'ai gardé self.L.configure(state='normal') dans "ParcourirListbox" , sinon cela ne fonctionne pas.
    Mais je pensais avoir répondu sur ce point hier soir, j'ai du me tromper dans l'envoie de ma réponse!
    Ben tant mieux si cela fonctionne...

    L'histoire sur l'ascenseur on peut l'oublier dans ce cas, peu importe, c'est juste que je ne sais pas exactement ce que tu veux faire, par exemple je pensais que tu avais ajouter la ligne self.L.configure(state='disabled') volontairement pour désélectionner la ligne lorsque la souris ne survole plus la listebox et que tu t'étais aperçu que la ligne était aussi désélectionnée lorsque tu utilises l'accesseur chose que tu ne voulais pas... D'où la solution dont je t'ai parlée qui a pour but de désélectionner la ligne seulement lorsque la souris ne survole ni la listebox ni l'ascenseur.

    Oui parce que là, ton programme ne désélectionne plus du tout la ligne même lorsque la souris ne survole ni la listebox ni l'ascenseur...

    Mais bon si c'est finalement ce que tu veux pas de problème, c'est simple il suffit effectivement de supprimer la ligne self.L.configure(state='disabled')...

    Citation Envoyé par Cemalatowilo Voir le message
    Je vous le soumets de nouveau pour avis (peut-on l'améliorer?)
    Peut-être bien qu'il peut être amélioré mais pas par moi car je ne maitrise pas tkinter et je suis débutant en Python...

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

Discussions similaires

  1. [Python 3.X] Problème avec le focus sur une listbox
    Par Cemalatowilo dans le forum Tkinter
    Réponses: 5
    Dernier message: 06/11/2019, 00h41
  2. Comment faire un HitTest sur une Listbox
    Par DotNET74 dans le forum Windows Phone
    Réponses: 3
    Dernier message: 17/11/2011, 12h37
  3. Réponses: 4
    Dernier message: 24/05/2006, 16h05
  4. Comment supprimer un verrou sur une table ?
    Par Laure13 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 13/03/2006, 15h10

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