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

Jinku Hu 25 Juni 2020
  1. Beispielcode zum Abrufen der Eingabe von Tkinter Text-Widget
  2. Beispielcode zum Holen der Eingabe ohne newline am Ende von Tkinter Text Widget
Wie man die Eingabe aus dem Tkinter-Textfeld erhält

Tkinter Text-Widget hat die Methode get(), um die Eingabe aus dem Textfeld zurückzugeben, die das Argument start Position und ein optionales end Argument hat, um die Endposition des zu lesenden Textes zu spezifizieren.

get(start, end=None)

Wenn end nicht angegeben wird, wird nur ein an der start-Position angegebenes Zeichen zurückgegeben.

Beispielcode zum Abrufen der Eingabe von Tkinter Text-Widget

import tkinter as tk

root = tk.Tk()
root.geometry("400x240")


def getTextInput():
    result = textExample.get("1.0", "end")
    print(result)


textExample = tk.Text(root, height=10)
textExample.pack()
btnRead = tk.Button(root, height=1, width=10, text="Read", command=getTextInput)

btnRead.pack()

root.mainloop()
result = textExample.get("1.0", "end")

Die Position des ersten Zeichens im Text Widget ist 1.0 und könnte als Zahl 1.0 oder als Zeichenkette "1.0" bezeichnet werden.

"end" bedeutet, dass die Eingabe bis zum Ende des Text-Feldes gelesen wird. Wir könnten hier auch tk.END anstelle der Zeichenkette "end" verwenden.

Tkinter get Textbox Input_Inculde neue Zeile

Das winzige Problem, wenn wir "end" als Endposition des zurückzugebenden Textes angeben, beinhaltet auch das Zeilenumbruchszeichen \n am Ende des Textstrings, wie Sie in der obigen Animation sehen konnten.

Wir könnten das "end" Argument der get Methode so ändern, dass es das "end-1c" ist, wenn wir den Zeilenumbruch in der zurückgegebenen Eingabe nicht wollen.

"end-1c" bedeutet, dass die Position ein Zeichen vor dem "end" steht.

Beispielcode zum Holen der Eingabe ohne newline am Ende von Tkinter Text Widget

import tkinter as tk

root = tk.Tk()
root.geometry("400x240")


def getTextInput():
    result = textExample.get(1.0, tk.END + "-1c")
    print(result)


textExample = tk.Text(root, height=10)
textExample.pack()
btnRead = tk.Button(root, height=1, width=10, text="Read", command=getTextInput)

btnRead.pack()

root.mainloop()

Tkinter erhält Textfeld Input_Not Inculde neue Zeile

Hier könnten wir auch tk.END+"-1c" neben "end-1c" verwenden, um das letzte Zeichen - \n - zu eliminieren, denn tk.END = "end", also ist tk.END+"-1c" gleich "end"+"-1c"="end-1c".

Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Verwandter Artikel - Tkinter Text