HOWTO · Tkinter

Wie man die Eingabe aus dem Tkinter-Textfeld erhält

Dieser Artikel untersucht, wie man mit der get-Methode Eingaben aus einem Tkinter-Textfeld erhält. Lernen Sie, Start- und Endindizes für präzises Abrufen von Text anzugeben, Validierung zu implementieren und Ihre Python-Anwendungen mit benutzerfreundlichen Oberflächen zu verbessern. Entdecken Sie praktische Codebeispiele und detaillierte Erklärungen, um Benutzereingaben in Ihren Tkinter-Projekten effektiv zu erfassen.

Auf dieser Seite

Um ein Tkinter Text-Widget zu lesen, rufen Sie seine get-Methode mit einem Startindex und einem Endindex auf. Für den vollständigen Inhalt verwenden Sie text_box.get("1.0", "end-1c"): 1.0 markiert den Anfang, und end-1c lässt die abschließende neue Zeile des Widgets aus.

Text mit dem Tkinter Text-Widget abrufen

Dieses vollständige Fenster lässt einen Benutzer mehrere Zeilen eingeben und sie mit einer Schaltfläche abrufen. Der Callback behält den zurückgegebenen String in user_input; ersetzen Sie den print-Aufruf durch die Verarbeitung, die Ihre Anwendung benötigt.

import tkinter as tk

def get_input():
    user_input = text_box.get("1.0", "end-1c")
    print("User Input:", user_input)

root = tk.Tk()
root.title("Read Text Input")

text_box = tk.Text(root, height=8, width=40)
text_box.pack(padx=8, pady=8)

get_button = tk.Button(root, text="Get Input", command=get_input)
get_button.pack(pady=(0, 8))

root.mainloop()

Dieses GUI-Beispiel ist in den bereitgestellten Laufzeitnachweisen nicht ausgeführt; die Erklärung folgt der Indexsemantik von Tkinter.

Der erste Index ist einschließend, und der Endindex markiert, wo das Abrufen stoppt. get akzeptiert auch einen einzelnen Index; ohne Endindex gibt es das Zeichen an dieser Position zurück statt des gesamten Widgets.

Start- und Endindizes wählen

Tkinter-Textindizes verwenden eine line.column-Form. 1.0 bedeutet das erste Zeichen in der ersten Zeile, während 2.0 den Anfang der zweiten Zeile bedeutet. Daher wählt text_box.get("1.0", "2.0") die erste Zeile aus, einschließlich ihres Zeilenumbruchs, falls vorhanden. Wählen Sie eine spätere Zeile und Spalte, um einen kleineren Bereich zu lesen. Die Endposition ist im zurückgegebenen Text nicht enthalten.

Die abschließende neue Zeile ausschließen

Ein Text-Widget behält immer eine neue Zeile am Ende, auch wenn der Benutzer keinen Text eingegeben hat. Das Lesen bis "end" schließt diese letzte neue Zeile ein. Verwenden Sie "end-1c" als Endindex, um nur dieses letzte Zeichen auszulassen; der äquivalente Tkinter-Ausdruck ist tk.END + "-1c". Dieser Unterschied ist wichtig, wenn Sie den abgerufenen Wert vergleichen, speichern oder an Code übergeben, der keinen zusätzlichen Zeilenumbruch erhalten sollte.

Eingabe des Tkinter Text-Widgets, mit der get-Methode abgerufen

Teiltext, mit der get-Methode aus einem Tkinter Text-Widget abgerufen

Abgerufene Eingaben validieren

Wenn die Anwendung sinnvollen Inhalt erfordert, prüfen Sie eine getrimmte Ansicht des Strings: if not user_input.strip():. Dies behandelt Eingaben, die nur aus Leerzeichen bestehen, als leer. Behalten Sie user_input unverändert, wenn die ursprüngliche Formatierung oder Zeilenumbrüche wichtig sind; verwenden Sie den getrimmten Wert nur für die Prüfung, es sei denn, Ihre Anwendung möchte den Text des Benutzers absichtlich normalisieren. Zeigen Sie Rückmeldung in der Oberfläche, wenn die Prüfung fehlschlägt, und verarbeiten Sie den ursprünglichen Wert weiter, wenn sie besteht.