-2
votes

Comment utiliser la fonction Python Eval () pour une fenêtre de texte Tkinter?

J'ai ce code, lequel dans l'essence crée une calculatrice. La calculatrice est basée sur la fonction EVAL () pour évaluer l'entrée dans le champ de texte. xxx

la fonction Exec () fournit exactement la même erreur,

typeError: eval () arg 1 doit être une chaîne, des octets ou un objet de code < P> Toute aide est appréciée, merci!


0 commentaires

5 Réponses :


0
votes

Le problème avec votre code est que vous transmettez le widget texte lui-même et non sa valeur à Eval. Vous devez utiliser la méthode .get () pour prendre la valeur à partir de votre widget texte et utilisez uniquement l'utilisation .eval () à ce sujet.


0 commentaires

2
votes

Comme l'indique l'exception,

evaluate = eval(text.get("1.0", tk.END))


0 commentaires

0
votes

texte est un objet objet , pas une chaîne, vous ne pouvez donc pas passer directement que sur eval .

Vous avez besoin Pour obtenir le texte affiché dans le texte objet à l'aide de obtenir , puis transmettez-le sur eval xxx


0 commentaires

0
votes

Ceci est parce que votre dans votre fonction EVAL est votre widget texte, ce que vous voulez est en réalité l'entrée dans ce widget. Au lieu de texte , vous pouvez essayer avec text.get ("1.0", "fin-1c") . .

La première partie, 1.0 signifie que l'entrée doit être lue de la ligne une, du caractère zéro. Le fin-1c signifie lire jusqu'à atteindre la fin de la zone de texte, sans le dernier caractère qui est un caractère de ligne de rupture.


0 commentaires

1
votes

C'est parce que dans eval () Vous passez l'instance de tkinter.text classe. Je pense que vous souhaitez transmettre le contenu de la zone de texte, vous obtenez le contenu comme celui-ci text.get (1.0, "fin-1c") qui vous retournera de contenu dans la chaîne afin que vous puissiez faire Évaluez = EVAL (TEXT.GET (1.0, "END-1C"))


0 commentaires