Verschachtelte Buttons
Verfasst: Dienstag 19. Oktober 2021, 08:20
Hi,
ich habe ein Programm geschrieben, das eine Zahl einlesen soll und durch das Betätigen eines Buttons eine weitere Eingabe freigeben soll (das funktioniert soweit). Nur leider kann die zweite Zahl nicht richtig eingelesen werden. Es wird nicht erkannt, dass eine Zahl eingegeben wurde und die Ausgabe "Es muss etwas eingegeben werden!" wird angezeigt, als hätte man nichts eingegeben.
Mein Gedanke war, dass die Funktion "def button_action" nichts in der globalen Variable "eingang_text2" speichern kann, da der Wert erst durch das Bestätigen des Buttons feststeht und man vor dem Speichern direkt in die nächste Funktion rutscht.
Ein anderer Gedanke war, den gleichen Weg, wie bei der ersten Funktion "def button_anzahl", zu gehen. Ich dachte man könnte mit der Funktion "eingabefeld2.get()" (als Kommentar zu Beginn bei "def button_action2" zu sehen) auf das zweite Eingabefeld zugreifen, was nicht möglich ist, da es sich in der Funktion "def button_action" befindet.
Kann man möglicherweise von außen auf die Textfelder zugreifen? Oder den Inhalt eines Textfeldes an eine andere Funktion übergeben?
Hat jemand eine weitere Idee oder einen Tipp, wie man das Problem lösen könnte?
Darüber würde ich mich sehr freuen!
Viele Grüße Carlotta
ich habe ein Programm geschrieben, das eine Zahl einlesen soll und durch das Betätigen eines Buttons eine weitere Eingabe freigeben soll (das funktioniert soweit). Nur leider kann die zweite Zahl nicht richtig eingelesen werden. Es wird nicht erkannt, dass eine Zahl eingegeben wurde und die Ausgabe "Es muss etwas eingegeben werden!" wird angezeigt, als hätte man nichts eingegeben.
Mein Gedanke war, dass die Funktion "def button_action" nichts in der globalen Variable "eingang_text2" speichern kann, da der Wert erst durch das Bestätigen des Buttons feststeht und man vor dem Speichern direkt in die nächste Funktion rutscht.
Ein anderer Gedanke war, den gleichen Weg, wie bei der ersten Funktion "def button_anzahl", zu gehen. Ich dachte man könnte mit der Funktion "eingabefeld2.get()" (als Kommentar zu Beginn bei "def button_action2" zu sehen) auf das zweite Eingabefeld zugreifen, was nicht möglich ist, da es sich in der Funktion "def button_action" befindet.
Kann man möglicherweise von außen auf die Textfelder zugreifen? Oder den Inhalt eines Textfeldes an eine andere Funktion übergeben?
Hat jemand eine weitere Idee oder einen Tipp, wie man das Problem lösen könnte?
Darüber würde ich mich sehr freuen!
Viele Grüße Carlotta
Code: Alles auswählen
import tkinter as tk
from tkinter import*
fenster = tk.Tk()
fenster.title("Berechnung WEA:")
fenster.geometry('850x550')
def button_anzahl():
eingang_text = eingabefeld.get()
if (eingang_text == ""):
berechnete_ausgabe.config(text="Es muss etwas eingegeben werden!")
else:
ausgang_text = "Anzahl: " + str(eingang_text)
berechnete_ausgabe.config(text=ausgang_text)
button_action()
def button_action():
label_frage2 = Label(fenster, text="Höhe: ", font=('arial', 10, 'bold'))
eingabefeld2 = Entry(fenster, bd=5, width=20)
global eingang_text2
eingang_text2 = str(eingabefeld2.get())
bestätigen_button2 = Button(fenster, text="Bestätigen", command=button_action2)
label_frage2.grid(row = 1, column = 0)
eingabefeld2.grid(row = 1, column = 1)
bestätigen_button2.grid(row = 1, column = 2)
def button_action2():
#eingang_text2 = eingabefeld2.get()
if (eingang_text2 == ""):
berechnete_ausgabe2 = Label(fenster)
berechnete_ausgabe2.config(text="Es muss etwas eingegeben werden!")
berechnete_ausgabe2.grid(row = 1, column = 3)
else:
ausgang_text2 = "Höhe: " + str(eingang_text2)
berechnete_ausgabe2 = Label(fenster)
berechnete_ausgabe2.config(text=ausgang_text2)
berechnete_ausgabe2.grid(row = 1, column = 3)
global g_nabenhoehe
g_nabenhoehe = float(eingang_text2)
#ABFRAGE ANZAHL
label_frage = Label(fenster, text="Anzahl: ", font=('arial', 10, 'bold'))
berechnete_ausgabe = Label(fenster)
eingabefeld = Entry(fenster, bd=5, width=20)
bestätigen_button = Button(fenster, text="Bestätigen", command=button_anzahl)
label_frage.grid(row = 0, column = 0)
eingabefeld.grid(row = 0, column = 1)
berechnete_ausgabe.grid(row = 0, column = 3)
bestätigen_button.grid(row = 0, column = 2)
fenster.mainloop()