Profilo di giovanni18

Nome giovanni18
Indirizzo email n/a
Messaggi1
  • problema con il .get e il keyerror
    Forum >> Programmazione Python >> GUI
    ciao a tutti!

    ringrazio in anticipo chiunque riesca a darmi una risposta, premetto che sono nuovo nel settore della programmazione, quindi non so ancora poco.




    io sto creando un programma per il calcolo delle temperature interstiziali di una parete e sto sfruttando tkinter per crearne la GUI, tuttavia mi da questo errore:




    Exception in Tkinter callback
    Traceback (most recent call last):
    File "C:\Users\gioviAppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 1702, in __call__
    return self.func(*args)
    File "C:\Users\giovi\Desktop\programma super powa\FILE SISTEMA\app1.py", line 231, in controlloavanti
    locals()["spesStrat"+str(r)] = locals()["b"+"spesStrat"+str(r)+"input"].get()
    KeyError: 'bspesStrat1input'









    quando eseguo il .get in questa parte del programma:




    def avanti():
    Nstrat=Nstratinput.get()
    Nstrat =int(Nstrat)
    n1=13
    r=0
    i=0
    for i in range(Nstrat):

    locals()["b"+"spesStrat"+str(r)]=Label(zonainserimento,text="digittare lo SPESSORE dello strato N°"+str(r)+" m:")
    locals()["b"+"spesStrat"+str(r)].grid(row=n1,column=0)
    locals()["b"+"spesStrat"+str(r)+"input"]=Entry(zonainserimento,bg="grey")
    locals()["b"+"spesStrat"+str(r)+"input"].focus_set()
    locals()["b"+"spesStrat"+str(r)+"input"].grid(row=n1,column=1)

    n1=n1+1

    locals()["b"+"condStrat"+str(r)]=Label(zonainserimento,text="digittare la CONDUTTIVITA termica dello strato N°"+str(r)+" [w/m*k]:")
    locals()["b"+"condStrat"+str(r)].grid(row=n1,column=0)
    locals()["b"+"condStrat"+str(r)+"input"]=Entry(zonainserimento,bg="grey")
    locals()["b"+"condStrat"+str(r)+"input"].focus_set()
    locals()["b"+"condStrat"+str(r)+"input"].grid(row=n1,column=1)
    n1=n1+1
    r=r+1


    pulsanteAVANTI.grid_remove()
    ##debug
    def controlloavanti():
    Nstrat=Nstratinput.get()
    Nstrat =int(Nstrat)
    r=1
    i=0

    for i in range(Nstrat):

    try:
    locals()["spesStrat"+str(r)] = locals()["b"+"spesStrat"+str(r)+"input"].get()
    locals()["spesStrat"+str(r)] =float(locals()["spesStrat"+str(r)])
    return locals()["spesStrat"+str(r)]
    M2=2
    except ValueError:
    M2=1


    if M2==1:
    (locals()["spesStrat"+str(r)+"input"]).configure(bg="red")

    if M2!=1:
    (locals()["spesStrat"+str(r)+"input"]).configure(bg="green")


    try:
    locals()["condStrat"+str(r)] = locals()["b"+"condStrat"+str(r)+"input"].get()
    locals()["condStrat"+str(r)]=float(locals()["condStrat"+str(r)])
    return locals()["condStrat"+str(r)]
    N2=2
    except ValueError:
    N2=1



    if N2==1:
    (locals()["condStrat"+str(r)]).configure(bg="red")

    if N2!=1:
    (locals()["condStrat"+str(r)]).configure(bg="green")
    r=r+1
    pulsanteCONTROLLO1 = Button (zonainserimento, text = "CONTROLLA VALORI",bg="yellow", command =controlloavanti)
    pulsanteCONTROLLO1.grid(row=n1+3,column=1,padx=15)



    pulsanteFINE=Button(zonamedia, text="CALCOLA", bg="yellow", command=calcolo)
    pulsanteFINE.grid(row=1, column=4)





    vi posso giurare che le ho provate tutte ma non riesco a venirne a capo.

    Allego anche il file completo nel caso possa tornarvi utile.