als blutiger Anfänger wende ich mich hoffnungsvoll an Euch, da ich in meinen Python-Büchern zu meinem Vorhaben nichts finden konnte.
Wiederholt geht es bei Formularen um einen einzutragenden Wert, der dann beim Drücken eines bestimmten Schalters das Ergebnis der hinterlegten Rechenoperation ausspuckt.
Leider finde ich nirgends, wie durch Angabe bestimmter Start-Werte deren weiterberechnetes Ergebnis ins nächste Feld geschrieben wird (z.B. wie in Excel)
Konkret geht es um Stoßdämpfer-Federn: Deren Federrate, Federhub, Blockmaß und Kraft zu berechnen ist.
Die Berechnungen konnte ich als Python Code recht flott durchführen.
Nun wollte ich diese Aufgabe in ein benutzerfreundliches Formular mit Eingabefeldern überführen:
Ein Ausgangs-Wert (Zahl) wird in Feld 5 eingetragen.
"Nehme diesen Ausgangs-Wert, rechne damit und schreibe das Ergebnis in Feld 7."
"Nehme diesen Ausgangs-Wert, rechne damit und schreibe das Ergebnis in Feld 8."
"Nehme diesen Ausgangs-Wert, rechne damit und schreibe das Ergebnis in Feld 9."
"Nehme diesen Ausgangs-Wert, rechne damit und schreibe das Ergebnis in Feld 10."
etc.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Mein bisheriges "Werk" sieht wie folgt aus (das Formular ohne Berechnungs-Block <=Zeile 148-225> funktioniert).
Die Funktionen, jeweils mitsamt get-Methode, sollten funktionieren.
Aber wie wird darin jeweils das Problem "schreibeErgebnis(Feldxy)" gelöst?
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
from tkinter import *
master = Tk()
Label(master, text="Datum").grid(row=0, sticky='w', columnspan=1)
Label(master, text="").grid(row=1)
Label(master, text="Dämpfer-Typ").grid(row=2, sticky='w', columnspan=1)
Label(master, text="Feder-Typ").grid(row=3, sticky='w', columnspan=1)
Label(master, text="").grid(row=4)
Label(master, text="Federrate lbs/inch").grid(row=5, sticky='w', columnspan=1)
Label(master, text="").grid(row=6)
Label(master, text="Federrate kg/inch").grid(row=7, sticky='w', columnspan=1)
Label(master, text="Federrate kg/cm").grid(row=8, sticky='w', columnspan=1)
Label(master, text="Federrate N/cm").grid(row=9, sticky='w', columnspan=1)
Label(master, text="Federrate N/mm").grid(row=10, sticky='w', columnspan=1)
Label(master, text="").grid(row=11)
Label(master, text="Feder-Länge ungespannt (freie Länge) mm").grid(row=12, sticky='w', columnspan=1)
Label(master, text="").grid(row=13)
Label(master, text="Zwischenraum 01 mm").grid(row=14, sticky='w', columnspan=1)
Label(master, text="Zwischenraum 02 mm").grid(row=15, sticky='w', columnspan=1)
Label(master, text="Zwischenraum 03 mm").grid(row=16, sticky='w', columnspan=1)
Label(master, text="Zwischenraum 04 mm").grid(row=17, sticky='w', columnspan=1)
Label(master, text="Zwischenraum 05 mm").grid(row=18, sticky='w', columnspan=1)
Label(master, text="Zwischenraum 06 mm").grid(row=19, sticky='w', columnspan=1)
Label(master, text="Zwischenraum 07 mm").grid(row=20, sticky='w', columnspan=1)
Label(master, text="Zwischenraum 08 mm").grid(row=21, sticky='w', columnspan=1)
Label(master, text="Zwischenraum 09 mm").grid(row=22, sticky='w', columnspan=1)
Label(master, text="Zwischenraum 10 mm").grid(row=23, sticky='w', columnspan=1)
Label(master, text="Max. Feder-Hub (Summe Zwischenräume) mm").grid(row=24, sticky='w', columnspan=1)
Label(master, text="").grid(row=25)
Label(master, text="Draht-Durchmesser mm").grid(row=26, sticky='w', columnspan=1)
Label(master, text="Volle Windungen Anzahl").grid(row=27, sticky='w', columnspan=1)
Label(master, text="Windungs-Anfang oben mm").grid(row=28, sticky='w', columnspan=1)
Label(master, text="Windungs-Ende unten mm").grid(row=29, sticky='w', columnspan=1)
Label(master, text="Blockmaß mm").grid(row=30, sticky='w', columnspan=1)
Label(master, text="").grid(row=31)
Label(master, text="Daempfer-Hub mm").grid(row=32, sticky='w', columnspan=1)
Label(master, text="").grid(row=33)
Label(master, text="Max. möglicher Feder-Hub (Freie Länge-Blockmaß) mm").grid(row=34, sticky='w', columnspan=1)
Label(master, text="Max. mögliche Vorspannung mm").grid(row=35, sticky='w', columnspan=1)
Label(master, text="").grid(row=36)
Label(master, text="Max. mögliche Anfangskraft N").grid(row=37, sticky='w', columnspan=1)
Label(master, text="Max. mögliche Anfangskraft kg").grid(row=38, sticky='w', columnspan=1)
Label(master, text="").grid(row=39)
Label(master, text="Max. mögliche Endkraft N").grid(row=40, sticky='w', columnspan=1)
Label(master, text="Max. mögliche Endkraft kg").grid(row=41, sticky='w', columnspan=1)
e0 = Entry(master)
#e1 = Entry(master)
e2 = Entry(master)
e3 = Entry(master)
#e4 = Entry(master)
e5 = Entry(master)
#e6 = Entry(master)
e7 = Entry(master)
e8 = Entry(master)
e9 = Entry(master)
e10 = Entry(master)
#e11 = Entry(master)
e12 = Entry(master)
#e13 = Entry(master)
e14 = Entry(master)
e15 = Entry(master)
e16 = Entry(master)
e17 = Entry(master)
e18 = Entry(master)
e19 = Entry(master)
e20 = Entry(master)
e21 = Entry(master)
e22 = Entry(master)
e23 = Entry(master)
e24 = Entry(master)
#e25 = Entry(master)
e26 = Entry(master)
e27 = Entry(master)
e28 = Entry(master)
e29 = Entry(master)
e30 = Entry(master)
#e31 = Entry(master)
e32 = Entry(master)
#e33 = Entry(master)
e34 = Entry(master)
e35 = Entry(master)
#e36 = Entry(master)
e37 = Entry(master)
e38 = Entry(master)
#e39 = Entry(master)
e40 = Entry(master)
e41 = Entry(master)
e0.grid(row=0, column=1)
#e1.grid(row=1, column=1)
e2.grid(row=2, column=1)
e3.grid(row=3, column=1)
#e4.grid(row=4, column=1)
e5.grid(row=5, column=1)
#e6.grid(row=6, column=1)
e7.grid(row=7, column=1)
e8.grid(row=8, column=1)
e9.grid(row=9, column=1)
e10.grid(row=10, column=1)
#e11.grid(row=11, column=1)
e12.grid(row=12, column=1)
#e13.grid(row=13, column=1)
e14.grid(row=14, column=1)
e15.grid(row=15, column=1)
e16.grid(row=16, column=1)
e17.grid(row=17, column=1)
e18.grid(row=18, column=1)
e19.grid(row=19, column=1)
e20.grid(row=20, column=1)
e21.grid(row=21, column=1)
e22.grid(row=22, column=1)
e23.grid(row=23, column=1)
e24.grid(row=24, column=1)
#e25.grid(row=25, column=1)
e26.grid(row=26, column=1)
e27.grid(row=27, column=1)
e28.grid(row=28, column=1)
e29.grid(row=29, column=1)
e30.grid(row=30, column=1)
#e31.grid(row=31, column=1)
e32.grid(row=32, column=1)
#e33.grid(row=33, column=1)
e34.grid(row=34, column=1)
e35.grid(row=35, column=1)
#e36.grid(row=36, column=1)
e37.grid(row=37, column=1)
e38.grid(row=38, column=1)
#e39.grid(row=39, column=1)
e40.grid(row=40, column=1)
e41.grid(row=41, column=1)
# Runden auf 2 Kommastellen
rx = round(x,2)
# Funktion zur Umrechnung der Federrate
# In der Funktion federrate() wird die Methode get() auf das Eingabefeld e5 angewendet.
# Sie liefert die eingegebene Zeichenkette als Rückgabewert.
# Diese Zeichenkette wird in der Variablen kgproinch gespeichert.
def federrate1():
kgproinch = e5.get()
wert5 = float(kgproinch)
# Durch die Funktion float() wird die Zeichenkette in eine Zahl umgewandelt
# und in der Variablen wert5 gespeichert.
# Mit Wert5 wird gerechnet und das Ergebnis in Feld e7 geschrieben.
schreibeErgebnis(e7, rx) = wert5 * 0.454
def federrate2():
kgprocm = e5.get()
wert5 = float(kgprocm)
schreibeErgebnis(e8, rx) = wert5 / 2.54 * 0.454
def federrate3():
Nprocm = e5.get()
wert5 = float(Nprocm)
schreibeErgebnis(e9, rx) = (wert5 / 2.54 * 0.454) * 9.81
def federrate4():
Npromm = e5.get()
wert5 = float(Npromm)
schreibeErgebnis(e10, rx) = (wert5 / 2.54 * 0.454) * 9.81 / 10
def maxfederhub():
zw01 = e14.get()
zw02 = e15.get()
zw03 = e16.get()
zw04 = e17.get()
zw05 = e18.get()
zw06 = e19.get()
zw07 = e20.get()
zw08 = e21.get()
zw09 = e22.get()
zw10 = e23.get()
schreibeErgebnis(e24) = e14 + e15 + e16 + e17 + e18 + e19 + e20 + e21 + e22 + e23
def blockmass():
drahtdurchm = e26.get()
windanzahl = e27.get()
windanfang = e28.get()
windende = e29.get()
schreibeErgebnis(e30) = e26 * e27 + e28 + e29
def maxvorspannung():
freielaenge = e12.get()
blockmass = e30.get()
daempferhub = e32.get()
schreibeErgebnis(e35) = e12 - e30 - e32
def maxanfangskraftN():
maxvorspannung = e35.get()
federrateNpromm = e10.get()
schreibeErgebnis(e37) = e35 * e10
def maxanfangskraftKg():
maxvorspannung = e35.get()
federrateNpromm = e10.get()
schreibeErgebnis(e38) = e35 * e10 / 9.81
def maxendkraftmaxvorspannungN():
maxvorspannung = e35.get()
federrateNpromm = e10.get()
daempferhub = e32.get()
schreibeErgebnis(e40) = (e35 * e10) + e32 * e10
def maxendkraftmaxvorspannungKg():
maxvorspannung = e35.get()
federrateNpromm = e10.get()
daempferhub = e32.get()
schreibeErgebnis(e41) = ((e35 * e10) + e32 * e10) / 9.81
mainloop( )
--------------------------------------------------------------------------------------------------------------------------------------------
Vielleicht kann mir jemand unter die Arme greifen.
Gerne bin ich auch bereit, Euren Aufwand zu bezahlen.
Vorab schon mal besten Dank.
