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 gérer une erreur de Entry


Sujet :

Tkinter Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Analyse système
    Inscrit en
    Décembre 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Décembre 2016
    Messages : 24
    Points : 11
    Points
    11
    Par défaut Comment gérer une erreur de Entry
    Bonjour,

    Je suis débutant en python mais j'essaie de faire un petit programme en interface graphique avec TKINTER

    Dans ma fenêtre je fais un : age = Entry(fen1)

    Après avoir saisi la valeur age, je fais un fen1.destroy et j'arrive a continuer a utiliser ma variable car j'avais fais un GLOBAL AGE

    Mon programme fonctionne mais mon problème c'est que si au lieu de saisir une valeur pour age, je ferme la fenêtre avec la croix

    Je me retrouve avec la variable age qui est egale a .!entry et qui donc est inexploitable. Comment puis je gérer cette erreur ?

    J'ai beau essayer avec un IF age == ".!entry" mais ca ne fonctionne jamais

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

    Citation Envoyé par poseidon31 Voir le message
    Comment puis je gérer cette erreur ?
    A priori, si vous ne devez détruire la fenêtre principale qu'à la sortie de l'application. Donc, il n'y a pas d'erreur à gérer, juste à apprendre à utiliser tkinter normalement (et les tutos sont là pour çà).

    - W

  3. #3
    Membre à l'essai
    Homme Profil pro
    Analyse système
    Inscrit en
    Décembre 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Décembre 2016
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    C'est gentil mais ça m'aide pas beaucoup, Je ne vois pas le rapport dans le fait de détruire ma fenêtre principale ou pas.

    Vous voudriez dire que le traitement de ma variable doit se faire dans la fenêtre TKINTER et pas après ?

  4. #4
    Membre confirmé

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Points : 503
    Points
    503
    Billets dans le blog
    1
    Par défaut
    Salut.

    Citation Envoyé par poseidon31 Voir le message
    Vous voudriez dire que le traitement de ma variable doit se faire dans la fenêtre TKINTER et pas après ?
    Oui, de toute façon, il y a une obligation de vérifier ce qui est saisi non ?

    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
    import tkinter as tk
     
    age = 0
     
    def setAge(*args):
        global age
        age = int(varAge.get())
     
    root = tk.Tk()
     
    varAge = tk.StringVar()
    varAge.trace('w', setAge)
     
    entry = tk.Entry(root, textvariable=varAge)
    entry.grid()
     
    root.mainloop()
     
    print('var age =', age)
    print('var stringVar', varAge.get())
    print(entry.get()) # erreur
    En passant par la fonction setAge, on peut s'assurer que ce qui est saisi est valide et autoriser la fermeture de la fenêtre le cas échéant. En récupérant la valeur la variable tkinter après la fermeture de la fenêtre sans avoir vérifier sa valeur (donc en virant le trace de la var, rien ne garanti que ce qui a été saisi est bien correct.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Analyse système
    Inscrit en
    Décembre 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Décembre 2016
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    Ok merci, j'ai modifié mon code pour inclure la suite dans la boucle de la fenêtre TKINTER comme ca je n'ai plus le problème

  6. #6
    Membre à l'essai
    Homme Profil pro
    Analyse système
    Inscrit en
    Décembre 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Décembre 2016
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    J'ai quand même encore une petite question : comment vérifier que ce que je saisi en ENTRY est bien un nombre

    J'ai essayé avec ceci : if type(int(age.get())) == int:

    Ca marche quand je saisi un nombre mais j'ai un message d'erreur quand je saisi du texte car il ne peut pas faire du INT du texte

    Et si j'essaie avec ; if type(age.get()) == int:
    Ca me considère toujours que c'est du STR et pas du INT

    Comment vous feriez vous ?

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 398
    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 398
    Points : 36 957
    Points
    36 957
    Par défaut
    Citation Envoyé par poseidon31 Voir le message
    J'ai quand même encore une petite question : comment vérifier que ce que je saisi en ENTRY est bien un nombre
    çà se fait en utilisant la validation décrite ici .

    - W

  8. #8
    Membre à l'essai
    Homme Profil pro
    Analyse système
    Inscrit en
    Décembre 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Décembre 2016
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    Merci beaucoup

Discussions similaires

  1. Réponses: 22
    Dernier message: 17/06/2012, 10h28
  2. comment gérer une erreur de violation de clé
    Par pierrot67 dans le forum Débuter
    Réponses: 3
    Dernier message: 15/04/2011, 08h24
  3. Réponses: 1
    Dernier message: 17/09/2006, 10h45
  4. Comment gérer une Progressbar pendant un CopyFrom ?
    Par greg778 dans le forum Composants VCL
    Réponses: 7
    Dernier message: 25/07/2005, 15h34
  5. Comment lancer une erreur dans une procédure stockée
    Par borgfabr dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/05/2005, 17h06

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