2014-08-29 4 views
-1

Mon code est ici:Comment puis-je corriger cette erreur: Erreur de type: type d'opérande non pris en charge (s) pour /: 'str' et 'int' (Ceci est une calculatrice de pointe)

import sys 
from tkinter import * 
def mhello(): 
    text1 = total 
    mlabel1 = Label(text=text1, fg ="red") 
    mlabel1.pack() 
    return 
dog = Tk() 
input0 = StringVar() 
input1 = StringVar() 
input2 = StringVar() 
dog.geometry('450x450') 
dog.title("Tip Calculator") 
mlabel = Label(text='This is a Simple Tip Calculator', fg ="red") 
mlabel.pack() 
mentry = Entry(dog, textvariable=input0) 
mentry.pack() 
mentry0 = Entry(dog, textvariable=input1) 
mentry0.pack() 
mentry1 = Entry(dog, textvariable=input2) 
mentry1.pack() 
meal = input0.get() 
tax = input1.get() 
tip = input2.get() 
tip = tip/100 
tax = tax/100 
meal = meal + meal * tax 
total = meal + meal * tip 
mbutton = Button(text='Calculate',command = mhello) 
mbutton.pack() 

dog.mainloop() 
+1

Conseil: Que voulez-vous pense que 'StringVar' est pour? –

+0

Veuillez faire quelques recherches avant de demander directement le code – Coconop

+0

@heltonbiker: Oui, puisque OP vient de publier un lien vers le document Google Docs, alors que ce site est destiné à viser des questions et des réponses autonomes (sinon il serait facilement périmé). Est-ce que j'ai cassé quelque chose? – Tadeck

Répondre

0

Input.get() renvoie la chaîne, vous devez le convertir en float: float (Input0.get())

+0

Merci, c'est ce dont j'avais besoin –

+0

Nvm maintenant je reçois cette erreur: ValueError: impossible de convertir la chaîne à float: –

0

Vous ne pouvez pas diviser une chaîne par un entier. Au lieu d'abord le convertir en int ou float, selon votre objectif:

>>> '120'/100 

Traceback (most recent call last): 
    File "<pyshell#8>", line 1, in <module> 
    '120'/100 
TypeError: unsupported operand type(s) for /: 'str' and 'int' 
>>> int('120')/100 
1 
>>> float('120')/100 
1.2 

Dans votre cas, cette pièce:

meal = input0.get() 
tax = input1.get() 
tip = input2.get() 

doit être remplacé par:

meal = float(input0.get()) 
tax = float(input1.get()) 
tip = float(input2.get()) 
+0

Oh ok j'essayais d'obtenir l'entrée, puis le convertir en un flotteur, mais encore eu des erreurs c'est ce dont j'avais besoin Merci. :) –

+0

Nvm Je reçois cette erreur maintenant: ValueError: impossible de convertir la chaîne en float: –

Questions connexes