ich möchte das bei meinem BMI Rechner die Gewichtsskala mit dem Gewichtseingabefeld verbunden ist und das die Größenskala mit dem Größeneigabefeld gekoppelt ist. Ich weiß allerdings nicht genau wie und bitte hier also mir auf die Sprünge zu helfen.
Zur Zeit gebe ich Werte in mein Eingabefeld ein, dann verschiebt sich auch die Skala. Verschiebe ich allerdings nur den Regler der Skala, so werden keine Werte an mein Eingabefeld gesendet. Wie kann ich dies also richtig koppeln?
Zudem würde mich interessieren, wie die Fehlermeldung "Achtung","Ungültig. Bitte gebe einen gültigen Wert (Zahl) ein" auch erscheint, wenn man 0 eintippt. Bisher kommt die Fehlermeldung nur, wenn der Wert keine Zahl ist. Hilft mir da der Operator OR weiter in der Zeile " if(Groesse.isdigit() or Gewicht.isdigit()):"? Quasi das ich dort or <=0 noch miteinbinde?
Zum besseren Verständnis hier mein Code:
Code: Alles auswählen
from tkinter import *
import tkinter.messagebox
class BMI:
def __init__(self,root):
self.root = root
self.root.title("Body Mass Index Rechner")
self.root.geometry("1043x481+0+0")
self.root.configure(background='#FFD7D7')
Hauptrahmen = Frame(self.root,bd=15,width=900,height=450,padx=10,pady=7,bg="#FFD7D7",relief=RIDGE)
Hauptrahmen.grid()
LinkerRahmen = Frame(Hauptrahmen,bd=10,width=500,height=450,padx=10,pady=7,bg="#FFD7D7",relief=RIDGE)
LinkerRahmen.pack(side=LEFT)
RechterRahmen = Frame(Hauptrahmen,bd=10,width=400,height=450,padx=10,pady=7,bg="#FFD7D7",relief=RIDGE)
RechterRahmen.pack(side=RIGHT)
LinkerRahmen0 = Frame(LinkerRahmen,bd=3,width=500,height=85,padx=3,pady=3,bg="#E0A2A2",relief=RIDGE)
LinkerRahmen0.grid(row=1,column=0)
LinkerRahmen1 = Frame(LinkerRahmen,bd=3,width=500,height=170,padx=3,pady=3,relief=RIDGE)
LinkerRahmen1.grid(row=2,column=0)
LinkerRahmen2 = Frame(LinkerRahmen,bd=3,width=500,height=95,padx=3,pady=3,relief=RIDGE)
LinkerRahmen2.grid(row=3,column=0)
LinkerRahmen3 = Frame(LinkerRahmen,bd=3,width=500,height=125,padx=3,pady=3,relief=RIDGE)
LinkerRahmen3.grid(row=4,column=0)
RechterRahmen0 = Frame(RechterRahmen,bd=3,width=400,height=85,padx=3,pady=1,relief=RIDGE)
RechterRahmen0.grid(row=1,column=0)
RechterRahmen1 = Frame(RechterRahmen,bd=3,width=400,height=220,padx=3,pady=1,relief=RIDGE)
RechterRahmen1.grid(row=2,column=0)
RechterRahmen2 = Frame(RechterRahmen,bd=3,width=400,height=85,padx=3,pady=1,relief=RIDGE)
RechterRahmen2.grid(row=3,column=0)
var1 = StringVar()
var2 = StringVar()
var3 = DoubleVar()
var4 = DoubleVar()
def Beenden():
Beenden = tkinter.messagebox.askyesno("Body Mass Index","Bestätige wenn Du Verlassen möchtest")
if Beenden > 0:
root.destroy()
return
def Zurücksetzen():
var1.set("")
var2.set("")
var3.set(0)
var4.set(0)
self.txtBMIErgebnis.delete("1.0",END)
def BMI_Rechner():
Groesse=(var1.get())
Gewicht=(var2.get())
self.txtBMIErgebnis.delete("1.0",END)
if(Groesse.isdigit() or Gewicht.isdigit()):
Groesse=float(Groesse)
Gewicht=float(Gewicht)
BMI=float('%.2f'%(Gewicht / ((Groesse/100)**2)))
self.txtBMIErgebnis.insert(END,BMI)
var3.set(Groesse)
var4.set(Gewicht)
return True
else:
tkinter.messagebox.showwarning("Achtung","Ungültig. Bitte gebe einen gültigen Wert (Zahl) ein")
var1.set("")
var2.set("")
var3.set(0)
var4.set(0)
self.txtBMIErgebnis.delete("1.0",END)
self.lblTitle = Label(LinkerRahmen0,text="Body Mass Index Rechner", padx=10,pady=3,bd=1,width=24,height=2,fg="#000000",font=('Verdana',28,'bold'),bg='#E0A2A2')
self.lblTitle.pack()
self.Koerpergroesse = Scale(RechterRahmen0,variable=var3, from_=120, to=220,length=385,tickinterval=10,orient = HORIZONTAL,label="Größe in cm",font=('Verdana',10,'bold'))
self.Koerpergroesse.grid(row=1,column=0)
self.Koerpergewicht = Scale(RechterRahmen2,variable=var4, from_=40, to=150,length=385,tickinterval=10,orient = HORIZONTAL,label="Gewicht in kg",font=('Verdana',10,'bold'))
self.Koerpergewicht.grid(row=1,column=0)
self.lblBMITabelle=Label(RechterRahmen1,font=('Verdana',16,'bold'),text="\tBMI Tabelle").grid(row=0,column=0)
self.txtBMITabelle=Text(RechterRahmen1,height=12,width=38,bd=16,font=('Verdana',12,'bold'))
self.txtBMITabelle.grid(row=1,column=0,columnspan=3)
self.txtBMITabelle.insert(END, 'Bedeutung \t\t\t' + "BMI-Wert \n\n")
self.txtBMITabelle.insert(END, 'Kritisches Untergewicht \t\t\t' + "< 17.5 \n\n")
self.txtBMITabelle.insert(END, 'Untergewicht \t\t\t' + "17.5 - 19 \n\n")
self.txtBMITabelle.insert(END, 'Normalgewicht \t\t\t' + "19 - 25 \n\n")
self.txtBMITabelle.insert(END, 'Übergewicht \t\t\t' + "25 - 30 \n\n")
self.txtBMITabelle.insert(END, 'Kritisches Übergewicht \t\t\t' + "> 30 \n\n")
self.lblGroesse=Label(LinkerRahmen1,text="Größe in Zentimetern eingeben:",font=('Verdana',16,'bold'),bd=2,width=30,height=3,justify=LEFT)
self.lblGroesse.grid(row=1,column=0,padx=15)
self.txtGroesse=Entry(LinkerRahmen1,textvariable = var1,font=('Verdana',16,'bold'),bd=3,width=11,justify=RIGHT)
self.txtGroesse.grid(row=1,column=1,pady=10)
self.lblGewicht=Label(LinkerRahmen1,text="Gewicht in Kilogramm eingeben:",font=('Verdana',16,'bold'),bd=2,height=3,width=30,justify=LEFT)
self.lblGewicht.grid(row=2,column=0)
self.txtGewicht=Entry(LinkerRahmen1,textvariable = var2,font=('Verdana',16,'bold'),bd=3,width=11,justify=RIGHT)
self.txtGewicht.grid(row=2,column=1,pady=10)
self.lblBMIErgebnis=Label(LinkerRahmen2,text="Dein BMI-Wert beträgt:",font=('Verdana',16,'bold'),bd=2,width=29)
self.lblBMIErgebnis.grid(row=0,column=0)
self.txtBMIErgebnis=Text(LinkerRahmen2,padx=12,pady=12,font=('Verdana',16,'bold'),bd=5,bg="#E0A2A2",width=12,height=1,relief=SUNKEN)
self.txtBMIErgebnis.grid(row=0,column=1)
self.buttonBMI=Button(LinkerRahmen3,text="Berechne BMI",font=('Verdana',16,'bold'),bd=4,pady=2,padx=4,width=11,height=4,command=BMI_Rechner)
self.buttonBMI.grid(row=1,column=0)
self.buttonZurücksetzen=Button(LinkerRahmen3,text="Zurücksetzen",font=('Verdana',16,'bold'),bd=4,padx=4,pady=2,width=11,height=4,command=Zurücksetzen)
self.buttonZurücksetzen.grid(row=1,column=1)
self.buttonBeenden=Button(LinkerRahmen3,text="Verlassen",font=('Verdana',16,'bold'),bd=4,pady=2,padx=4,width=11,height=4,command=Beenden)
self.buttonBeenden.grid(row=1,column=2)
if __name__=='__main__':
root = Tk()
application = BMI(root)
root.resizable(width=False, height=False)
root.mainloop()
Ich bedanke mich schonmal für jegliche Hilfe!!
Liebe Grüße,
cuphead