Partage
  • Partager sur Facebook
  • Partager sur Twitter

Je n'arrive pas a supprimer le contenu d'une entry

Imposible de supp les caractères de mon entry Tkinter

    9 avril 2021 à 20:35:00

    Bonsoir, je rencontre actuellement un problème avec mon programme, quand ma fenêtre admin s'ouvre, tout fonctionne, mais j'aimerais qu'a chaque fois qu'on valide et qu'on clique sur le bouton valider, ça supprime le contenu de mon entry. 

    Vous pouvez testez mon code pour mieux comprendre. (Il faut de tromper 3 fois de mdp dans la fenêtre principale pour ouvrir la fenêtre admin) qui ressemble à ça:

    Voici mon code:

    Le problème est de la ligne 160 à 210: 

    # (C) Soufiane Allaoui
    # (C) MyPortableProfile
    
    from tkinter import *
    from tkinter.messagebox import * # boîte de dialogue
    import tkinter as tk
    from tkinter import StringVar
    from datetime import datetime
    import time
    import datetime as dt
    
    
    
    # Données confidentielles
    
    numGUALLA = 5742
    numALLAOUI = 4289
    numWASSIM = 9432
    numDESEBIO = 7012
    
    
    
    essais = 3
    
    
    def Verification():
        
        
        
        global essais # rappel de la var globale dans le def
        
        if (Motdepasse.get() == '5742') :
            # le mot de passe est bon : on affiche une boîte de dialogue puis on ferme la fenêtre
            showinfo('Résultat','Mot de passe correct!\nOuverture du portail.')
            Mafenetre.destroy()
            essais = essais - 1
            essais = 3 # pour que quand je vais devoir ne pas faire ferme la fenetre, à chaque bon code, on remet les essais à 3
            # ici une fonction/module qui appel l'ouverture du portail
    
        elif (Motdepasse.get() == '4289') :
            # le mot de passe est bon : on affiche une boîte de dialogue puis on ferme la fenêtre
            showinfo('Résultat','Mot de passe correct!\nOuverture du portail.')
            Mafenetre.destroy()
            essais = essais - 1
            essais = 3
    
    
        elif (Motdepasse.get() == '9432') :
            # le mot de passe est bon : on affiche une boîte de dialogue puis on ferme la fenêtre
            showinfo('Résultat','Mot de passe correct!\nOuverture du portail.')
            Mafenetre.destroy()
            essais = essais - 1
            essais = 3
    
    
        elif (Motdepasse.get() == '7012') :
            # le mot de passe est bon : on affiche une boîte de dialogue puis on ferme la fenêtre
            showinfo('Résultat','Mot de passe correct!\nOuverture du portail.')
            Mafenetre.destroy()
            essais = essais - 1
            essais = 3
    
    
        else:
            # le mot de passe est incorrect : on affiche une boîte de dialogue
            showwarning('Résultat','Mot de passe incorrect.\nVeuillez recommencer !')
            Motdepasse.set('')
            essais = essais - 1
    
    
                
                # Mise en place d'un anti-spam  qui bloque à 3 essai
        
        if (essais == 0):
            showinfo('Résultat', 'Vos 3 essais ont été épuisés.')
            Champ.insert(tk.INSERT, 'oooooooooooooooooooooooooooooooooooooooooo') # pour créer un effet de stop
            Champ.config(state='disabled')
            Bouton.config(state='disabled')
            showwarning('Accès au service saturé.','Accès bloqué, déblocage administrateur requise.')
            deblock()
            essais = 3 # ça remet en place le système d'anti-spam
            
            
                
            
    # Centrage de fenadmin     
    
        
        
    def center_window(fenadmin):
        eval_ = fenadmin.nametowidget('.').eval
        eval_('tk::PlaceWindow %s center' % fenadmin)      
            
            
    
    
    # Création de la fenêtre principale (main window)
    Mafenetre = Tk()
    Mafenetre.title('MPP Portal')
    Mafenetre.geometry("500x500")
    Mafenetre.configure(bg ="#000B4C")
    
    # Création d'un canvas en bas façon windows
    
    lg = 500
    ht = 30
    br = 5
    zf = 2
     
    bottom=Canvas(Mafenetre, bg="#DBDBDB", width=lg,
               height=ht, bd=br,
               highlightthickness=zf,
               highlightbackground="#000B4C")
    bottom.pack
    
    
    bottom.place(x=-2, y=463)
    
    # Création d'un widget Label (texte 'Mot de passe')
    Label1 = Label(Mafenetre, text = 'Code confidentiel:', fg='black')
    Label1.pack(side = LEFT, padx = 5, pady = 5)
    Label1.place(x=150, y=230, width=220, height=25)
    Label1.configure(bg="#DBDBDB")
    
    
    # Création d'un widget Entry (champ de saisie)
    Motdepasse= StringVar()
    Champ = Entry(Mafenetre, textvariable= Motdepasse, show='*', bg ='#1E2E8E', fg='#DBDBDB')
    Champ.focus_set()
    Champ.pack(side = LEFT, padx = 5, pady = 5)
    Champ.place(x=150, y=270, width=220, height=25)
    
    
    # Création d'un widget Button (bouton Valider)
    Bouton = Button(Mafenetre, text ='Valider', command = Verification, fg='black', cursor='hand2')
    Bouton.pack(side = LEFT, padx = 5, pady = 5)
    Bouton.place(x=150, y=310, width=220, height=45)
    Bouton.configure(bg ="#DBDBDB")
    
    
    
    # On lie le bouton "valider" à la touche entrée dans la fen principale
    
    def callback1(event):
        Verification()
        
    
    Mafenetre.bind('<Return>', callback1)
    
    
            
    
    
    # Creation d'un widget de débloquage admin
    
    mdpadmin = StringVar() # On définit que mdpadmin = chaine de carac 
    fenadmin = None # Pour enlever l'érreur du fenadmin
    
    
    def deblock():
    
        global fenadmin
        fenadmin = Toplevel(Mafenetre)
        fenadmin.configure(bg ="#000B4C")
        center_window(fenadmin)
        fenadmin.geometry('150x80')
        
        l = Label(fenadmin, text = "Code admin:", fg='black', width= '25')
        l.configure(bg ="#DBDBDB")
        l.place(x=75, y=10)
        
        
        e = Entry(fenadmin, textvariable= mdpadmin, show='*', bg='#1E2E8E', fg='#DBDBDB')
        e.focus_set()
        e.place(x=75, y=50)
        
        
        
       
        b = Button(fenadmin ,text="Valider", command= Verifadmin, fg='black', width= '25', cursor='hand2')
        b.configure(bg ="#DBDBDB")
        b.place(x=75, y=80)
        
        
        l.pack()
        e.pack()
        b.pack()
        
        
        
    
      
    def Verifadmin():   
        
        if (mdpadmin.get() == '2727'):
            e = Entry(fenadmin)
            showinfo('Résultat','Mot de passe correct!\n Accès débloqué.')
            Champ.config(state='normal')
            Bouton.config(state='normal')
            Motdepasse.set('')
            e.delete(0,tk.END)
            fenadmin.destroy()
            
            
            
                
        else:
            e.delete(0,tk.END)
            showwarning('Résultat','Code admin incorrect!')
            
            
            
            
            
             
            
    #Création d'un espace logo/gif
    
    
    lg = 210
    ht = 150
    br = 5
    zf = 2
     
    logo=Canvas(Mafenetre, bg="ivory", width=lg,
               height=ht, bd=br,
               highlightthickness=zf,
               highlightbackground="black")
    logo.pack(side='left', padx=20, pady=20)
    
    logo.place(x=150, y=40)
    logo.configure(bg ='#000B4C')
    
    
    
    image = PhotoImage(file = 'tenor.gif', master=logo)
    logo1 = logo.create_image(150, 120, image = image )
    
    
    
    
    # Checkbutton pour rendre visible ou invisible le mdp
    
    def checkbutton1():
        
        if CocheValue.get() == 1:
            Champ.config(show='*')
            
        elif CocheValue.get() == 0:
            Champ.config(show='')
    
    CocheValue = tk.BooleanVar() 
    CocheValue.set(True)
     
    Coche = tk.Checkbutton(Mafenetre,
                                text='Afficher le mot de passe',
                                variable=CocheValue, width='24',
                                bg='#DBDBDB',
                                bd='0',
                                fg='black',
                                activebackground='#DBDBDB', cursor='hand2', command= checkbutton1, 
                                ) 
    Coche.grid(column=0, row=10)
    Coche.place(x=151, y=370)
    
    
    
    
    # création d'un mode lum/dark avec bouton
    
    def colorlum():
        colorbutton.config(text="MODE SOMBRE")
        Mafenetre.config(bg='#DADADB')
        Label1.config(bg='#000B4C')
        Label1.config(fg='#DBDBDB')
        Bouton.config(bg='#000B4C')
        Bouton.config(fg='#DBDBDB')
        Coche.config(bg='#000B4C')
        Coche.config(fg='#DBDBDB')
        Coche.config(activebackground='#000B4C')
        adminbutton.config(bg='#000B4C')
        adminbutton.config(fg='#DBDBDB')
        colorbutton.config(bg='#000B4C')
        colorbutton.config(fg='#DBDBDB')
        Champ.config(bg='#DBDBDB')
        Champ.config(fg='#000B4C')
        colorbutton.config(image=photocolor1)
        adminbutton.config(image=photoadmin2)
        colorbutton.config(command= colordark)
        
        
    def colordark():
        colorbutton.config(text="MODE LUMINEUX")
        Mafenetre.config(bg='#000B4C')
        Label1.config(bg='#DBDBDB')
        Label1.config(fg='black')
        Bouton.config(bg='#DBDBDB')
        Bouton.config(fg='black')
        Coche.config(bg='#DBDBDB')
        Coche.config(fg='black')
        Coche.config(activebackground='#DBDBDB')
        adminbutton.config(bg='#DBDBDB')
        adminbutton.config(fg='black')
        colorbutton.config(bg='#DBDBDB')
        colorbutton.config(fg='black')
        Champ.config(bg='#1E2E8E')
        Champ.config(fg='#DBDBDB')
        colorbutton.config(image=photocolor2)
        adminbutton.config(image=photoadmin1)
        colorbutton.config(command= colorlum)
        
    photocolor1 = PhotoImage(file = "lune.png")
    photocolor2 = PhotoImage(file = "soleil.png")
    
    colorbutton = Button(Mafenetre ,text="MODE LUMINEUX", command= colorlum, fg='black', width= '30', cursor='hand2', image=photocolor2)
    colorbutton.configure(bg ="#DBDBDB")
    colorbutton.place(x=35, y=465)
    
    # Création d'un bouton admin
    
    photoadmin1 = PhotoImage(file = "admin.png")
    photoadmin2 = PhotoImage(file = "admindark.png")
    
    
    
    adminbutton = Button(Mafenetre ,text="URGENCE", command= deblock, fg='black', width= '30', cursor='hand2', image=photoadmin1)
    adminbutton.configure(bg ="#DBDBDB")
    adminbutton.place(x=0, y=465)
    
    
    
    
    
    
    # Création d'un widget heure locale
    
    
    def maj():
        # on arrive ici toutes les 1000 ms
        heure.set(time.strftime('%H:%M:%S'))
        Mafenetre.after(1000,maj)
    
    
    
    heure = StringVar()
    Label(Mafenetre,textvariable=heure, fg="black", bg="#DBDBDB", font=("helvetica", 8)).place(x=440, y=481)
    
    date = Label(Mafenetre, text=f"{dt.datetime.now():%a, %b %d %Y}", fg="black", bg="#DBDBDB", font=("helvetica", 8))
    date.place(x=389, y=465)
    
    maj()
    
    
    
    
    Mafenetre.mainloop()
    
    
    
    
    
    



    • Partager sur Facebook
    • Partager sur Twitter
      10 avril 2021 à 20:35:55

      Bonsoir,

      Je ne suis pas sur car je suis que un débutant mais tu pourrais essayer Champs.delete(0,END) la ligne au-dessus de tes boîtes de dialogues dans ta fonction Vérification

      • Partager sur Facebook
      • Partager sur Twitter
        12 avril 2021 à 18:46:13

        dans VerifAdmin(), le e n'est pas celui de deblock(). si tu veux modifier le texte de la fenêtre créée par deblock(), vu que tu as associé une StringVar à l'Entry, il suffit de vider cette variable:

        mdpadmin.set('') avec éventuellement un fenadmin.update_idletasks() sachant que ça ne servira que lorsque le code ne sera pas bon.

        (les lignes 196, 201,208 ne servent à rien)

        • Partager sur Facebook
        • Partager sur Twitter

        Je n'arrive pas a supprimer le contenu d'une entry

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown