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 :

Comment effacer/supprimer le contenu d'un 'widget Entry' Tkinter ?


Sujet :

Tkinter Python

  1. #1
    Candidat au Club
    Homme Profil pro
    sans emploi
    Inscrit en
    Juin 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Juin 2015
    Messages : 8
    Points : 3
    Points
    3
    Par défaut Comment effacer/supprimer le contenu d'un 'widget Entry' Tkinter ?
    bonjour,
    voici mon problème :

    premier passage

    1 ajouter d'inscription : fonctionne bien.
    reini : passe et efface pas
    2 reini deuxième passage : passe et efface pas.
    3 modifier premier passage : passe et fonction bien.
    reini : passe et efface pas
    4 reini troisième passage : passe et efface pas.
    5 supprimer premier passage : passe pas et fonctionne pas

    voici une partie de mon scripte:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # reinitialisation
        def reini(self):
            self.id=""                  # id
            self.titre=""               # Titre
            self.nom=""                # Nom 
            self.prenom=""             # Prenom
            self.mail=""                # mail
            self.telephone=""           # Telephone
            self.date=""               # Date
            self.cotisation=""         # cotisation
            self.ville=""            # ville
            self.code_postal=""         # code_postal
            self.adresse=""              # Adresse
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # supprimer
        def supprimer(self):
            con = sqlite3.connect("creerinscript.db")
            cur = con.cursor()
            cur.execute("DELETE FROM formordi WHERE id=?", (self.id(""),))
            con.commit()
            self.afficherRechertat()
            self.reini()
            con.close()
    je vous remercie d'avance pour l'aide.
    cordialement
    kyrob17

    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
    # ID Ordinateur     # id
            id = Label(Gestion_Frame, text="ID adhérent : ", font=("times new roman", 15), bg="cyan")
            id.place(x=5, y=50, width=180)
            id_txt = Entry(Gestion_Frame, textvariable=self.id, font=("times new roman", 15), bg="lightgray")
            id_txt.place(x=150, y=50, width=300)
            id_txt.focus_set()
     
            # Titre  
            titre = Label(Gestion_Frame, text="Titre : ", font=("times new roman", 15), bg="cyan")
            titre.place(x=5, y=80, width=232)
            titre_txt = ttk.Combobox(Gestion_Frame, textvariable=self.titre, font=("times new roman", 15), state="readonly")
            titre_txt["values"]=(" Mr", " Mme", " Mlle")
            titre_txt.place(x=150, y=80,width=100)
     
            # Nom
            nom = Label(Gestion_Frame, text="Nom : ", font=("times new roman", 15), bg="cyan")
            nom.place(x=5, y=110, width=230)
            nom_txt = Entry(Gestion_Frame, textvariable=self.nom, font=("times new roman", 15), bg="lightgray")
            nom_txt.place(x=150, y=110, width=300)
     
            # prenom
            prenom = Label(Gestion_Frame, text="Prénom : ", font=("times new roman", 15), bg="cyan")
            prenom.place(x=5, y=140, width=210)
            prenom_txt = Entry(Gestion_Frame, textvariable=self.prenom, font=("times new roman", 15), bg="lightgray")
            prenom_txt.place(x=150, y=140, width=300)
    voici une partie du script avec 'Entry'


    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
    def ajou_etudiant(self):
     
            if self.id=="" or self.nom =="" or self.prenom =="":
                messagebox.showerror("Erreur", "Vous n'avez pas rempli les champs obligatoires", parent=self.root)
     
            # id en minuscule
            strg = self.id.get() 
            self.id =strg
            strg = ""
     
            # titre en minuscule
            strg = self.titre.get()
            self.titre = strg
            strg = ""
     
            # nom en majuscule
            strg = self.nom.get()
            self.nom = strg.upper()
            strg = ""
     
            # prem. lettre en majuscule
            strg=self.prenom.get()
            self.prenom = strg.title()
            strg = ""
    et voici une autre partie du script avec la mise en majuscule

    cordialement
    kyrob17

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Si la question est "Comment effacer/supprimer le contenu d'un 'widget Entry' Tkinter ?", on ouvre une documentation sur Entry... on y trouve la méthode .delete qui a l'air de le faire et on essaie de le faire marcher.

    Mais comme dans votre message, il n'y a aucune trace d'Entry... peut être que le sujet est autre...


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

  3. #3
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 104
    Points : 4 454
    Points
    4 454
    Par défaut
    bonjour

    En effet il est bon de lire de la doc avant de se lancer... Tu peux par exemple regarder du côté de StringVar
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    self.id=""   
    ...
    id_txt = Entry(Gestion_Frame, textvariable=self.id, ...
    ...
    self.id =strg
    pas génial
    $moi= ( !== ) ? : ;

  4. #4
    Candidat au Club
    Homme Profil pro
    sans emploi
    Inscrit en
    Juin 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Juin 2015
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par papajoker Voir le message
    bonjour

    En effet il est bon de lire de la doc avant de se lancer... Tu peux par exemple regarder du côté de StringVar
    pas génial
    bonjour
    j'ai mis les variables en StringVarvoici une partie du script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      # les variables
            self.id = StringVar()            # id
            self.titre = StringVar()         # Titre
            self.nom = StringVar()           # Nom
            self.prenom = StringVar()        # Prenom
            self.mail = StringVar()          # Mail
            self.telephone = StringVar()     # Telephone
    je suis débutant ça fait quelque mois, que je me suis lancer en python.
    Ça fait quarante ans que je n’ai pas programmer (en Basic a l’époque).
    je regarde des tutos en vidéo et je me renseigne sur les forums divers.
    je fait des modules que j'ajoute aux autres jusque la ça marche, je commence a trouvais quelques problèmes maintenant.
    cordialement
    kyrob17

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par kyrob17 Voir le message
    je suis débutant ça fait quelque mois, que je me suis lancer en python.
    Ça fait quarante ans que je n’ai pas programmer (en Basic a l’époque).
    Faire un petit bout de code d'exemple avec une Entry, un StringVar et un Button de remise à zéro de l'Entry pour comprendre les mécanismes à mettre en œuvre (et avoir éventuellement un petit exemple de code complet à poster si vous avez besoin d'aide). Débutant ou pas, lorsqu'on essaie de comprendre quelque chose, on commence par simplifier plutôt que de recopier des blocs d'instructions qui ne marchent pas.
    *edit* ce qui amène à écrire de petits bouts de code pour tester ce qu'on sait qui ressemblent à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import tkinter as tk
    from tkinter.constants import END
     
    def do_clear():
        entry.delete(0, END)
     
    root = tk.Tk()
    entry = tk.Entry(root)
    entry.insert(0, '123')
    entry.pack()
    tk.Button(root, text='clear', command=do_clear).pack()
     
    tk.mainloop()
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 104
    Points : 4 454
    Points
    4 454
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            strg = self.id.get() 
            self.id =strg
            strg = ""
     
            # titre en minuscule
            strg = self.titre.get()
            self.titre = strg
            strg = ""
    Un restant des années 80 ou chaque octet était important ?
    Tu as loupé dans tes cours le "garbage collector" : il n'est pas possible de supprimer un objet en mémoire. Python le fait automatiquement lorsque qu'il le désire.

    De plus, ici tu fais l'inverse : tu vas créer plusieurs objets en mémoire (puisque python ne supprime pas l'objet immédiatement)
    A voir aussi les objets immutables !
    Et ... python utilise par défaut des références ! libérer une référence, ce n'est pas obligatoirement libérer de la mémoire


    ------------
    En basic, comme en python : on ne répète pas les constantes
    voir 36 font=("times new roman" me fait mal aux yeux ! on peut créer une constante/variable
    $moi= ( !== ) ? : ;

  7. #7
    Candidat au Club
    Homme Profil pro
    sans emploi
    Inscrit en
    Juin 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Juin 2015
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par papajoker Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            strg = self.id.get() 
            self.id =strg
            strg = ""
     
            # titre en minuscule
            strg = self.titre.get()
            self.titre = strg
            strg = ""
    Un restant des années 80 ou chaque octet était important ?
    Tu as loupé dans tes cours le "garbage collector" : il n'est pas possible de supprimer un objet en mémoire. Python le fait automatiquement lorsque qu'il le désire.

    De plus, ici tu fais l'inverse : tu vas créer plusieurs objets en mémoire (puisque python ne supprime pas l'objet immédiatement)
    A voir aussi les objets immutables !
    Et ... python utilise par défaut des références ! libérer une référence, ce n'est pas obligatoirement libérer de la mémoire


    ------------
    En basic, comme en python : on ne répète pas les constantes
    voir 36 font=("times new roman" me fait mal aux yeux ! on peut créer une constante/variable
    bonjour,
    il est vrai que je ne comprend pas tout, c'est par les erreurs que j'avance.
    a vrais dire, mon script fonctionne bien si je tape tout minuscule (pour pas me tromper quand je programme je tape en minuscule) donc je continue, je veux mettre le "mon" (taper en minuscule) pour le convertir en majuscule. je doit pas le mettre au bon endroit apparemment car je doit modifier le script bloc par bloc. d’après vous, la conversion, je doit le faire ou ? .
    le script fait maintenant plus de 400 lignes que le voudrais découper en plusieurs pages par la suite. quand tout ira bien.
    cordialement
    kyrob17

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par kyrob17 Voir le message
    d’après vous, la conversion, je doit le faire ou ? .
    Techniquement, le widget Entry a une fonctionnalité de validation qui permet de passer en majuscule les caractères (ou de faire autre chose) au fur et à mesure qu'ils sont entrés par l'utilisateur.

    Citation Envoyé par kyrob17 Voir le message
    il est vrai que je ne comprend pas tout, c'est par les erreurs que j'avance.
    Si vous n'ouvrez pas une documentation pour étudier ce qu'on peut faire avec un widget, vous n'avez pas essayé de comprendre (normal que vous ne compreniez pas)... Et pour ce qui est des erreurs, il faut apprendre à faire avec Python/Tkinter et non espérer qu'ils vont bien se débrouiller avec les instructions que vous leur demandez d'exécuter.

    Relisez:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            strg = self.id.get() 
            self.id =strg
            strg = ""
    Si au départ on avait un StringVar dans self.id on y récupère un string (qui n'a pas de méthode .get pour le coup suivant).

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

  9. #9
    Candidat au Club
    Homme Profil pro
    sans emploi
    Inscrit en
    Juin 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Juin 2015
    Messages : 8
    Points : 3
    Points
    3
    Par défaut comment remplacer get()
    Bonjour,

    j'ai un problème de .get() a la ligne n°297 que j'ai ajouter le bloc def modifier(self):
    sans ce bloc tout fonctionne bien. Je voulais apporter une sécurité par la mise automatique en majuscule et minuscule.
    je début depuis plus de six mois en autodidacte tous n'ai pas encore claire pour moi, j'ai fais des testes que je rajoute.
    j'ai oublier de dire que je suis sous python 3.11, ceci est une partie de mon script qui fait (plus 480 lignes).

    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
     # les variables
            self.id = StringVar()            # id
            self.titre = StringVar()         # Titre
            self.nom = StringVar()           # Nom
            self.prenom = StringVar()        # Prenom
            self.mail = StringVar()          # Mail
            self.telephone = StringVar()     # Telephone
     
    # Modifier
        def modifier(self):
            # id 
            strg = self.id
            self.id =strg
            strg = ""
     
            # titre 
            strg = self.titre
            self.titre = strg
            strg = ""
     
            # nom en majuscule
    297   strg = self.nom.get()
            self.nom = strg.upper()
            strg = ""
     
            # prem. lettre en majuscule
         strg=self.prenom.get()
            self.prenom = strg.title()
            strg = ""
     
            # chaine en minuscule
            strg=self.mail.get()
            self.mail = strg.lower()
            strg = ""
     
            # ville en majuscule
            strg = self.ville.get()
            self.ville = strg.upper()
            strg = ""
     
            # telephone 
            strg = self.telephone 
            self.telephone = strg
            strg = ""
     
     
     # conexion a la base de donnés 
            con = sqlite3.connect("creerinscript.db")
            cur = con.cursor()
            cur.execute("update formordi set titre=?, nom=?, prenom=?, mail=?, telephone=?,\
                        date=?, cotisation=?, ville=?, code_postal=?, adresse=? where id=?",
                        ((self.titre.get(),              # Titre
                        self.nom.get(),                  # Nom 
                        self.prenom.get(),               # Prenom 
                        self.mail.get(),                 # mail
                        self.telephone.get(),            # Telephone
     
    message d'erreur :
     
    File "d:\Python\projet_python\Formulaire_adherent_2\Etudiant-D-conversion-1.py", line 297, in modifier
        strg = self.nom.get()
               ^^^^^^^^^^^^
    AttributeError: 'str' object has no attribute 'get'
    merci pour de l'aide
    cordialement
    kyrob17

  10. #10
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 104
    Points : 4 454
    Points
    4 454
    Par défaut
    Tu ne pouvais pas lire le dernier message de ce sujet ? dernier paragraphe
    $moi= ( !== ) ? : ;

Discussions similaires

  1. effacer contenu d'un widget Entry
    Par ptiflo dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 01/02/2011, 11h14
  2. comment effacer le contenu d'un fichier
    Par groult jeremy dans le forum C++
    Réponses: 2
    Dernier message: 21/11/2005, 17h25
  3. comment effacer le contenu d'une table ttable
    Par naw dans le forum Bases de données
    Réponses: 4
    Dernier message: 07/07/2004, 16h13
  4. Comment effacer le contenu d'une scrollbox???
    Par Leclair2000 dans le forum C++Builder
    Réponses: 2
    Dernier message: 01/07/2004, 16h34

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