Comment valider l'entrée dans tkinter?

la grâce

J'ai trouvé des réponses à cette question mais aucune des réponses n'a fonctionné sur mon programme. J'essaie de valider la variable de nom dans mon code mais ce isalpha()n'est pas une fonction utilisée dans tkinter.

Voici mon code pour l'instant:

class newUser:
    root.title("Sign Up")
    header = Label(root, text = "Sign Up!\n")
    header.grid(row = 0, column = 0, sticky = E)

    global results
    results = False

    def getName(): #Getting name of the user
        global name

        nameX = Label(root, text = "Please enter your name: ")
        nameX.grid(row = 1, column = 0, sticky = W)

        name = Entry(root)
        name.grid(row =1, column = 1)
        #name = name.get()

        if name.isalpha() and name != "":
            name = name
            #newUser.getAge()
        else:
            print("Please ensure you have entered your name. Thank you. ")
            newUser.getName()
        root.mainloop()


newUser.getName()

J'ai essayé d'utiliser le name.get()mais cela a créé une boucle sans fin. Des idées?

Erick Shepherd

isalpha()est une fonction intégrée des strobjets. L'appel isalpha()à name, qui a été défini comme étant un tkinter.Entryobjet, lèvera une exception car tkinter.Entryn'a pas une telle fonction. Bien que vous ayez raison d'essayer d'utiliser la get()fonction, qui est une fonction d' tkinter.Entryobjets et renvoie un strqui prend en charge les isalpha()appels, votre implémentation est un peu décalée.

Vous entrez dans une récursion car name.get()retourne immédiatement une chaîne qui échoue au conditionnel sur la name != ""vérification, ce qui fait tomber l'interpréteur Python dans la elseclause catch-all qui appelle newUser.getName(), la fonction dans laquelle nous étions déjà et le processus se répète jusqu'à ce que vous dépassiez la récursivité maximale de Python profondeur. Vous ne souhaitez pas appeler get()l' tkinter.Entryobjet immédiatement car cela ne laisse pas le temps à l'utilisateur de saisir quoi que ce soit. Au lieu de cela, get()doit être appelé après qu'un événement s'est produit, tel qu'un bouton d'envoi pressé.

Essayez plutôt quelque chose comme ce qui suit:

import tkinter as tk

root = tk.Tk()

class NewUser:

    def __init__(self):

        self.name = None

        root.title("Sign Up")

        self.headerLabel  = tk.Label (root, text = "Sign Up!\n")
        self.nameLabel    = tk.Label (root, text = "Please enter your name: ")
        self.nameField    = tk.Entry (root)
        self.submitButton = tk.Button(root, text = "Submit", command = self.saveName)

        self.headerLabel.grid (row = 0, column = 0, columnspan = 2)
        self.nameLabel.grid   (row = 1, column = 0, sticky = "W")
        self.nameField.grid   (row = 1, column = 1)
        self.submitButton.grid(row = 2, column = 0, columnspan = 2, sticky = "EW")

    def saveName(self):

        name = self.nameField.get()

        if name.isalpha() and name != "":

            self.name = name
            print("Name saved: {}".format(self.name))

        else:

            print("Please ensure you have entered your name. Thank you.")

user = NewUser()

root.mainloop()

Ce code générera la fenêtre suivante:

fenêtre tkinter sans texte d'entrée

À ce stade, si vous appuyez sur le Submitbouton, namesera une chaîne vide et échouera la name != ""comparaison. Par conséquent, ce qui suit est imprimé sur la console:

Please ensure you have entered your name. Thank you.

Cependant, si vous entrez votre nom, en supposant que vous n'incluez que des caractères alpha comme ceci:

fenêtre tkinter avec texte d'entrée

Ce qui suit est imprimé sur la console lorsque vous appuyez sur Submit:

Name saved: Erick

Et le nom enregistré est désormais accessible via la self.namevariable membre de notre NewUserclasse.

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

Comment valider l'entrée dateTime dans MarkLogic?

Comment valider l'entrée dans ma classe Person

Comment valider la longueur du texte d'entrée dans l'entrée matérielle?

Je ne comprends pas comment valider le widget d'entrée dans tkinter

Comment valider l'entrée en vecteur

Comment valider l'entrée d'ions ajoutée dynamiquement dans Ionic

Comment valider l'entrée EditText avec une regex personnalisée dans Android?

Comment valider si l'entrée donnée existe ou non dans le tableau json?

Comment valider correctement l'entrée de l'utilisateur dans Django Generic Views

Comment valider l'entrée de l'utilisateur d'email dans Selenium ?

Comment valider l'entrée de l'utilisateur dans une fonction? # python3

Comment valider l'email d'entrée dans angucomplete-alt ?

Comment valider que l'entrée dans le scanner est un int?

Comment valider l'entrée pour faire correspondre les données dans le fichier CSV

comment puis-je renvoyer l'entrée utilisateur du widget d'entrée dans tkinter

Comment valider l'entrée chagée par inspect element?

Comment valider une entrée personnalisée à l'aide de react-hook-form dans Smart Form Component ?

Comment valider le type d'entrée = "nombre" dans ReactJS?

Comment valider une entrée numérique dans Node js?

comment valider l'entrée utilisateur avec javascript

Android: Comment puis-je valider l'entrée EditText?

Comment valider l'entrée en utilisant RxJava?

Comment valider l'entrée sur Tag Manager

Python: valider l'entrée dans la liste

Comment entrer un numéro dans l'entrée à l'aide du bouton dans tkinter

Comment valider les entrées dans Tkinter pour une valeur unique à chaque fois

Comment valider l'attribut de type "target.dataset" de la balise d'entrée dans le typographie

Comment enregistrer l'entrée d'entrée dans la variable dans tkinter j'utilise python 3

Comment insérer une valeur dans le widget d'entrée tkinter lorsque l'entrée est désactivée

TOP liste

  1. 1

    comment afficher un bouton au-dessus d'un autre élément ?

  2. 2

    impossible d'obtenir l'image d'arrière-plan en plein écran dans reactjs

  3. 3

    Je continue à obtenir l'objet 'WSGIRequest' n'a pas d'attribut 'Get' sur django

  4. 4

    comment supprimer "compte de connexion google" à des fins de développement - actions sur google

  5. 5

    Conversion double en BigDecimal en Java

  6. 6

    Impossible d'accéder à la vue personnalisée pendant le test de l'interface utilisateur dans XCode

  7. 7

    Algorithme: diviser de manière optimale une chaîne en 3 sous-chaînes

  8. 8

    Passer la taille d'un tableau 2D à une fonction ?

  9. 9

    Comment obtenir l'intégration contextuelle d'une phrase dans une phrase à l'aide de BERT ?

  10. 10

    Comment changer le navigateur par défaut en Microsoft Edge pour Jupyter Notebook sous Windows 10 ?

  11. 11

    CSS: before ne fonctionne pas sur certains éléments,: after fonctionne très bien

  12. 12

    Comment créer un bot à compte à rebours dans Discord en utilisant Python

  13. 13

    Comment ajouter une entrée à une table de base de données pour une combinaison de deux tables

  14. 14

    Exporter la table de l'arborescence vers CSV avec mise en forme

  15. 15

    Comment activer le message Pylint "too-many-locals" dans VS Code?

  16. 16

    Créer un système Buzzer à l'aide de python

  17. 17

    Spring @RequestParam DateTime format comme ISO 8601 Date Heure facultative

  18. 18

    Empêcher l'allocation de mémoire dans la génération de combinaison récursive

  19. 19

    Déplacement des moindres carrés d'ajustement pour les déplacements de points ayant des problèmes

  20. 20

    Comment choisir le nombre de fragments et de répliques Elasticsearch

  21. 21

    Microsoft.WebApplication.targets

chaudétiquette

Archive