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 :

effacement d'un Entry suite double clic [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Juillet 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2015
    Messages : 19
    Par défaut effacement d'un Entry suite double clic
    Bonjour
    Je selectionne une somme dans la liste
    La somme s'inscrit dans l'Entry <SELECTION>.
    si je double clic dans l'Entry <SOMME>, la somme disparait dans <SELECTION>

    Pourquoi le double clic appelle la fonction "def clic(self,evt)"

    Merci d'avance pour vos réponses
    Cordialement


    Voici le code erreur;
    ########################
    Exception in Tkinter callback
    Traceback (most recent call last):
    File "C:\Users\rico\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 1884, in __call__
    return self.func(*args)
    File "C:/Users/rico/Desktop/python_logiciel/Banque/essais.py", line 113, in clic
    self.recup_choix_liste = self.lisbox.get(self.lisbox.curselection())
    File "C:\Users\rico\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 3183, in get
    return self.tk.call(self._w, 'get', first)
    _tkinter.TclError: bad listbox index "": must be active, anchor, end, @x,y, or a number

    #####################################"




    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
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
     
    from tkinter import ttk
    from tkinter import *
     
     
    fenetre=Tk()
    fenetre.title("ESSAIS")
    fenetre.geometry("1250x700+10+10")
     
    #fenetre.update_idletask()
    width = fenetre.winfo_width()
    height = fenetre.winfo_height()
     
    width = 1250
    height = 700
     
    x = (fenetre.winfo_screenwidth()//2)-(width//2)
    y = (fenetre.winfo_screenheight()//2)-(height//2)
    fenetre.geometry('{}x{}+{}+{}'.format(width,height,x,y))
     
    class Saisie :
     
        def __init__(self):
     
            """Constructeur de la fenêtre principale"""
     
    #####################      
     
            # LISBOX
            self.Frame1= Frame(fenetre,height=370,width=300,bg='red')
            self.Frame1.grid(row=0, column=0,padx=10,pady=10 )
     
    #####################
     
            # LABEL SELECTION BENEFICIAIRE
            self.Frame2= Frame(fenetre,padx =0, pady =5)
            self.Frame2.grid(row=1, column=0,padx=10,pady=10 )
     
    #####################
     
            # LABEL ENTRY SOMME
            self.Frame3= Frame(fenetre,padx =0, pady =5)
            self.Frame3.grid(row=1, column=1 ,padx=10,pady=10 )  
     
    #####################
     
     
     
     
     
            #################  lISTBOX  ##########################
     
            self.barre = Scrollbar(self.Frame1, orient=VERTICAL)
            self.lisbox = Listbox(self.Frame1,bg='bisque',height=18,width=20,
                font=("arial",12,"bold italic"))
            self.barre.config(command = self.lisbox.yview)
            self.lisbox.config(yscrollcommand = self.barre.set, )
            self.lisbox.grid(column=0, row=0) 
            self.barre.grid(column=1, row=0, sticky=S+N)
     
            self.lisbox.bind("<<ListboxSelect>>", self.clic)
     
     
     
            ################### Selection Bénéficiaire #######################
     
            self.label_selection = Label(self.Frame2,text= 'SELECTION',
                font=("arial",12,"bold italic"),                    
                width =15,fg='red',bg='yellow')
            self.label_selection .grid( row=0,column=0,padx=0,pady=0)
     
            # Initialise la variable
            self.var_selection_Nouveau=StringVar()
     
            self.entry_selection = Entry(self.Frame2,
                textvariable = self.var_selection_Nouveau,width =20,bg='yellow',
                font=("arial",12,"bold italic"),
                disabledbackground ="yellow",disabledforeground ="black")
            self.entry_selection.grid( row=1,column=0,padx=0,pady=5)
     
            self.entry_selection.config(state=DISABLED)
     
            ##########################  Somme  ###############################
     
            self.label_somme = Label(self.Frame3,text= 'SOMME',width =15,fg='red',
                font=("arial",12,"bold italic"), bg='yellow')
            self.label_somme .grid( row=0,column=0,padx=0,pady=0)
     
            # Initialise la variable
            self.var_somme_Nouveau=StringVar()
     
            self.entry_somme = Entry(self.Frame3,
                textvariable = self.var_somme_Nouveau,
                font=("arial",12,"bold italic"),width =15,bg='yellow')
            self.entry_somme .grid( row=1,column=0,padx=0,pady=5)       
     
     
     
            self.liste_beneficiaire=[5,10,15,20,50]         
            for x in self.liste_beneficiaire:                   
                self.lisbox.insert('end',x)#rempli la liste   
     
     
     
     
        def clic(self,evt):# choix de la listbox BENEFICIAIRE      
            self.entry_selection.config(state=NORMAL)
            self.entry_selection.delete(0,END)#vide entry BENEFICIARE
     
            #récupere le nom du choix
            self.recup_choix_liste = self.lisbox.get(self.lisbox.curselection())
     
            # rempli entry type dépense        
            self.entry_selection.insert(0,self.recup_choix_liste)
     
            self.entry_selection.config(state=DISABLED)
     
     
     
     
     
     
     
     
    cl=Saisie()

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 744
    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 744
    Par défaut
    Salut,

    à priori, le message d'erreur _tkinter.TclError: bad listbox index "" dit que lisbox.curselection() n'a pas trouvé d'item sélectionné.

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

  3. #3
    Membre averti
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Juillet 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2015
    Messages : 19
    Par défaut salut
    Je suis d'accord avec toi.
    Mais pourquoi en double cliquant dans l'Entry "SOMME" la fonction "clic(self,evt)" est appelé
    Cordialement

  4. #4
    Invité
    Invité(e)
    Par défaut
    En effet c'est un bug assez troublant... µ


    Edit : La vache, c'est capillotracté quand même... J'aurais jamais trouvé.
    Dernière modification par Invité ; 05/09/2021 à 01h18.

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 744
    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 744
    Par défaut
    Salut,

    Essentiellement parce que l'évènement <<ListboxSelect>>" est généré lorsque "la sélection" change.
    Ajouter ou retirer des items de la sélection change la sélection.

    Quelque chose à comprendre est que, par défaut, la sélection est "globale" (contrôlé par exportselection). Et qu'on part pas à écrire un exemple aussi compliqué (qu'on ne peut pas lancer) avant d'avoir testé comment çà fonctionne.

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

  6. #6
    Membre averti
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Juillet 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2015
    Messages : 19
    Par défaut salut
    Merci pour ta réponse, mais vu mon niveau je ne comprends pas ta réponse.
    Peux-tu me répondre avec un exemple ou m'expliquer ta réponse avec mon niveau.
    Merci d'avance.
    Cordialement

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

Discussions similaires

  1. comment autoriser le double clic sur un champ desactivé ?
    Par linou dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 28/04/2005, 17h23
  2. [VB.NET] Ouvrir fichier dans appli par double-clic dessus
    Par vynce dans le forum Windows Forms
    Réponses: 4
    Dernier message: 29/03/2005, 16h43
  3. ListBox, Cases à cocher et Double-Clic
    Par Loïc dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 10/02/2005, 10h18
  4. Ouvrir un fichier sur un double-clic dans une TListBox
    Par SegmentationFault dans le forum Composants VCL
    Réponses: 4
    Dernier message: 09/08/2004, 17h22
  5. [débutant] Listview et double-clic
    Par Runlevel dans le forum C++Builder
    Réponses: 12
    Dernier message: 29/06/2004, 19h44

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