Seite 1 von 1

Eingabefeld nichts übergeben

Verfasst: Donnerstag 29. April 2021, 10:24
von Xalooz
Hallo,

im Moment ist es bei mir so, wenn ich meine GUI öffne, gibt es 3 Eingabefelder plus Start Button. Ich muss in alle Felder meinen Wert eintragen, damit es startet. Ich möchte allerdings auch mal Werte in nur 1 oder 2 Eingabefelder eingeben und den 3 leer lassen. Kann man irgendwie auch keinen Wert übergeben (einfach ignorieren, also auch kein 0 oder sonstiges). Es soll nur ein Start Button geben

Code: Alles auswählen

def button_start():
    x = int(eingabefeld.get())
    y = int(eingabefeld.get())
    z = int(eingabefeld.get())
    
 senden_button = Button(fenster, text="Start", command=button_start)
 
 ...
 ...

Re: Eingabefeld nichts übergeben

Verfasst: Donnerstag 29. April 2021, 10:34
von Sirius3
Du hast nur ein Eingabefeld `eingabefeld`. Und dieses muß auch als Argument an die Funktion `button_start` übergeben werden. Und keine Eingabe entspricht einem leeren String, daran kannst Du das erkennen.

Re: Eingabefeld nichts übergeben

Verfasst: Donnerstag 29. April 2021, 10:41
von Xalooz
Das war ein Fehler. Ich habe 3 Eingabefelder

Code: Alles auswählen

def button_start():
    x = int(eingabefeld1.get())
    y = int(eingabefeld2.get())
    z = int(eingabefeld3.get())
    
 senden_button = Button(fenster, text="Start", command=button_start)
 
 ...
 ...
Für jeden muss ich einen Wert eingeben, damit es überhaupt startet. Wie könnte man denn nichts übergeben?und der startet trotzdem

Re: Eingabefeld nichts übergeben

Verfasst: Donnerstag 29. April 2021, 10:54
von Sirius3
Dann fehlen eben mindestens drei Argument für die Funktion `button_start`.
Warum mußt Du das? Was passiert, wenn Du es nicht machst?

Re: Eingabefeld nichts übergeben

Verfasst: Donnerstag 29. April 2021, 10:55
von Xalooz
Es kommt die Fehlermeldung

Code: Alles auswählen

ValueError: invalid literal for int() with base 10: ''
Ich übergeben keine Integer, aber mein x erwartet einen Wert, wenn ich auf Start Button gehen

Re: Eingabefeld nichts übergeben

Verfasst: Donnerstag 29. April 2021, 10:58
von Sirius3
Du willst doch, dass die Eingabe optional ist, dann mußt Du schon auch Code schreiben, der mit diesem Fall umgehen kann, indem Du prüfst, ob die Eingabe ein leerer String ist.

Re: Eingabefeld nichts übergeben

Verfasst: Donnerstag 29. April 2021, 11:17
von Xalooz
Das ist ja das Problem. Ich kann ja keinen String an einen Int übergeben

Re: Eingabefeld nichts übergeben

Verfasst: Donnerstag 29. April 2021, 11:21
von __deets__
Natürlich kannst du das. “10” ist ein String. Was du wohl meinst ist, dass ein Leerstring nicht in eine Zahl umgewandelt werden kann. Dann musst du das eben prüfen, am besten, indem du die Ausnahme abfängst.

Re: Eingabefeld nichts übergeben

Verfasst: Donnerstag 29. April 2021, 11:31
von Sirius3
Natürlich kannst Du das. Wenn Du Deinen Code zeigen würdest, wäre das viel einfacher zu erklären,
hier mal, wie es aussehen müßte:

Code: Alles auswählen

import tkinter as tk
from functools import partial

def button_start(eingabefeld1, eingabefeld2, eingabefeld3):
    eingabe1 = eingabefeld1.get()
    if not eingabe1.strip():
        # für x wurde nichts eingegeben
        x = 0
    else:
        x = int(eingabe1)
    ...

def main():
    fenster = tk.Tk()
    eingabefeld1 = tk.Entry(fenster)
    eingabefeld1.pack()
    eingabefeld2 = tk.Entry(fenster)
    eingabefeld2.pack()
    eingabefeld3 = tk.Entry(fenster)
    eingabefeld3.pack()
    senden_button = tk.Button(fenster, text="Start", command=partial(button_start,
        eingabefeld1, eingabefeld2, eingabefeld3))
    senden_button.pack()

if __name__ == '__main__':
    main()

Re: Eingabefeld nichts übergeben

Verfasst: Donnerstag 29. April 2021, 11:56
von Xalooz
Habs hinbekommen, danke!

Fehler war woanders, sodass die Übergabe nicht funktionierte