Follower

Montag, 12. Februar 2018

Eingabefelder

Mit Entry erzeugt man ein Eingabefeld. Hatte ich schon. Dort konnte ich auch mit eval direkt Funktionen ausführen lassen. Praktisch.

Was aber, wenn mit der Eingabe irgendwas passieren soll? Kommt jetzt:

from tkinter import *

def button_action():
    entry_text = eingabe.get()
    if (entry_text == ""):
        Gruss.config(text="Gib zuerst einen Namen ein.")
    else:
        entry_text = "Welcome " + entry_text + "!"
        Gruss.config(text=entry_text)

# hier wird eine Funktion definiert, die zum Zuge kommt, wenn der Button gedrückt wird. Nämlich dass sie sich den eingegebenen Text aus dem später definierten Eingabe-Feld (eingabe) holen soll. Wenn da nix steht (==""), soll im Fenster "Gib zuerst einen Namen ein." erscheinen. Ansonsten aber soll "Welcome", der eingegebene Name und ein ! erscheinen.

fenster = Tk()
fenster.title("Ich warte auf eine Eingabe von dir.")

Text = Label(fenster, text="Gib deinen Namen ein: ")

Gruss = Label(fenster)

# Hier steht erst mal nix drin, bis der Button gedrückt wird.

eingabe = Entry(fenster, bd=5, width=40)

# Hier wird die Größe des Eingabefeldes bestimmt

welcom_button = Button(fenster, text="Klick me", command=button_action)
exit_button = Button(fenster, text="Beenden", command=fenster.quit)


# Hier werden zwei Button festgelegt. Beim ersten soll die oben definierte Funktion ablaufen, beim unteren das Programm beendet werden.

Text.grid(row = 0, column = 0)
eingabe.grid(row = 0, column = 1)
welcom_button.grid(row = 1, column = 0)
exit_button.grid(row = 1, column = 1)
Gruss.grid(row = 2, column = 0, columnspan = 2)


# Das kenne ich - mit der grid Anweisung werden die Elemente angeordnet.

mainloop()


Ich wäre natürlich nie darauf gekommen, es so zu machen. Aber inzwischen tröste ich mich damit, dass ich den Code zumindest in größeren Teilen nachvollziehen kann.

Keine Kommentare:

Kommentar veröffentlichen