qwerty17
Utente Attivo
- Messaggi
- 886
- Reazioni
- 99
- Punteggio
- 48
Ciao a tutti, ho creato l'altro giorno una semplice calcolatrice in python, con un label per la prima serie di numeri, un altro per l'operatore(+,-,/,x) e un altro per la seconda serie di numeri. Poi ho creato i vari bottoni dei numeri e un label dove dovrebbe comparire il risultato quando si preme il botton "uguale"...però il risultato non compare(inizialmente, quando usavo le stringvar non mi dava nessun errore, poi ho usato le intvar e mi dice che c'è un problema di segni).
Penso che il problema sia che python considera i numeri come stringhe e quindi non li fa sommare, sottrarre, ecc.
Come potrei risolvere questo problema?
questo è il codice:
grazie a tutti coloro che mi risponderanno!
Penso che il problema sia che python considera i numeri come stringhe e quindi non li fa sommare, sottrarre, ecc.
Come potrei risolvere questo problema?
questo è il codice:
Codice:
from tkinter import*
import math
root=Tk()
root.title("Calcolatrice")
#crea il primo riquadro a sinistra
numeri=IntVar()
numeri_lab=Label(root, textvariable=numeri, bg="red")
numeri_lab.pack()
numeri_lab.place(x=1, y=1)
numeri.set("")
#crea il riquadro intermedio, dove andranno i segni(+,-,x,/)
operatore=StringVar()
operatore_lab=Label(root, textvariable=operatore)
operatore_lab.pack()
operatore_lab.place(x=100, y=1)
#crea il terzo riquadro a destra, per il secondo gruppo di numeri
numeri2=IntVar()
numeri2_lab=Label(root, textvariable=numeri2, bg="red")
numeri2_lab.pack()
numeri2_lab.place(x=150, y=1)
numeri2.set("")
#se il segno è presente significa che il primo numero è stato già scritto, quindi il numero verrà
#scritto nel terzo riquadro a destra, altrimenti verrà scritto nel primo riquadro
def digita_valori(x):
if operatore_lab["text"]!="":
numeri2.set(numeri2_lab["text"]+x)
elif operatore_lab["text"]=="":
numeri.set(numeri_lab["text"]+x)
#ogni bottone, quando viene premuto aggiunge il numero stesso che si trova sul bottone
#in uno dei riquadri
numeri_lab["text"]=""
def num_uno():
digita_valori("1")
def num_due():
digita_valori("2")
def num_tre():
digita_valori("3")
def num_quattro():
digita_valori("4")
def num_cinque():
digita_valori("5")
def num_sei():
digita_valori("6")
def num_sette():
digita_valori("7")
def num_otto():
digita_valori("8")
def num_nove():
digita_valori("9")
#se lo zero è già presente come prima cifra non verrà digitata(per evitare 00050 ad es.)
def num_zero():
if operatore_lab["text"]=="":
if numeri_lab["text"]=="":
digita_valori("")
else:
digita_valori("0")
elif operatore_lab["text"]!="":
if numeri2_lab["text"]=="":
digita_valori("")
else:
digita_valori("0")
#se non c'è nessun numero la virgola non viene digitata(per evitare ,,,57 ad es.)
def num_virgola():
if operatore_lab["text"]=="":
if numeri_lab["text"]=="":
digita_valori("")
else:
digita_valori(",")
elif operatore_lab["text"]!="":
if numeri2_lab["text"]=="":
digita_valori("")
else:
digita_valori(",")
#cancella tutto ciò che è scritto nei 3 riquadri
def canc():
numeri.set("")
numeri2.set("")
operatore.set("")
#fa comparire i segni nel riquadro intermedio(se il primo riquadro è vuoto
#significa che non c'è nessun numero e quindi il segno non viene immesso)
def per():
if numeri_lab["text"]=="":
operatore.set("")
else:
operatore.set("X")
def diviso():
if numeri_lab["text"]=="":
operatore.set("")
else:
operatore.set("/")
def più():
if numeri_lab["text"]=="":
operatore.set("")
else:
operatore.set("+")
def meno():
if numeri_lab["text"]=="":
operatore.set("")
else:
operatore.set("-")
#label rosso dove dovrebbero comparire i risultati.Dovrebbero.
ris_lab=Label(root, bg="red")
ris_lab.pack()
ris_lab.place(x=1, y=230)
ris_lab["width"]=30
#per calcolare le addizioni, le sottrazioni, le moltiplicazioni e le divisioni
#le fa comparire nel riquadro rosso in basso ai numeri, ma non funziona
def risultato():
if operatore_lab["text"]=="+":
ris_lab["text"]==numeri+numeri2
elif operatore_lab["text"]=="-":
ris_lab["text"]==numeri-numeri2
elif operatore_lab["text"]=="X":
ris_lab["text"]==numeri*numeri2
elif operatore_lab["text"]=="/":
ris_lab["text"]==numeri/numeri2
#Bottoni dei numeri
uno=Button(root, text="1", fg="red", font=("helvetica", 12),command=num_uno)
uno.pack()
uno.place(x=10, y=130)
uno["width"]=3
due=Button(root, text="2", fg="red", font=("helvetica", 12),command=num_due)
due.pack()
due.place(x=60, y=130)
due["width"]=3
tre=Button(root, text="3", fg="red", font=("helvetica", 12),command=num_tre)
tre.pack()
tre.place(x=110, y=130)
tre["width"]=3
quattro=Button(root, text="4", fg="red", font=("helvetica", 12),command=num_quattro)
quattro.pack()
quattro.place(x=10, y=80)
quattro["width"]=3
cinque=Button(root, text="5", fg="red", font=("helvetica", 12),command=num_cinque)
cinque.pack()
cinque.place(x=60, y=80)
cinque["width"]=3
sei=Button(root, text="6", fg="red", font=("helvetica", 12),command=num_sei)
sei.pack()
sei.place(x=110, y=80)
sei["width"]=3
sette=Button(root, text="7", fg="red", font=("helvetica", 12), command=num_sette)
sette.pack()
sette.place(x=10, y=30)
sette["width"]=3
otto=Button(root, text="8", fg="red", font=("helvetica", 12), command=num_otto)
otto.pack()
otto.place(x=60, y=30)
otto["width"]=3
nove=Button(root, text="9", fg="red", font=("helvetica", 12),command=num_nove)
nove.pack()
nove.place(x=110, y=30)
nove["width"]=3
zero=Button(root, text="0", fg="red", font=("helvetica", 12), command=num_zero)
zero.pack()
zero.place(x=10, y=180)
zero["width"]=5
#Bottoni speciali
virgola=Button(root, text=",", fg="red", font=("helvetica", 12), command=num_virgola)
virgola.pack()
virgola.place(x=80, y=180)
virgola["width"]=3
cancella=Button(root, text="C", fg="blue", font=("helvetica", 12), command=canc)
cancella.pack()
cancella.place(x=200, y=130)
cancella["width"]=2
#Bottoni delle operazioni
x=Button(root, text="X", fg="blue", font=("helvetica", 12),command=per)
x.pack()
x.place(x=160, y=30)
x["width"]=2
diviso=Button(root, text="/", fg="blue", font=("helvetica", 12),command=diviso)
diviso.pack()
diviso.place(x=200, y=30)
diviso["width"]=2
più=Button(root, text="+", fg="blue", font=("helvetica", 12),command=più)
più.pack()
più.place(x=160, y=80)
più["width"]=2
meno=Button(root, text="-", fg="blue", font=("helvetica", 12, "bold"),command=meno)
meno.pack()
meno.place(x=200, y=80)
meno["width"]=2
uguale=Button(root, text="=", fg="blue", font=("helvetica", 12), command=risultato)
uguale.pack()
uguale.place(x=160, y=130)
uguale["width"]=2
root.mainloop()
grazie a tutti coloro che mi risponderanno!