HOWTO · Tkinter

Como obter a entrada da caixa de texto Tkinter

obtém o método do widget Tkinter Text Box recebe a entrada dele, e o argumento inicial e final especifica as posições inicial e final do texto a ser lido.

Nesta página

O widget Tkinter Text tem o método get() para retornar a entrada da caixa de texto, que tem o argumento de posição start, e um argumento opcional end para especificar a posição final do texto a ser buscado.

get(start, end=None)

Se não for dado end, somente um caractere especificado na posição start será retornado.

Exemplo de código para obter a entrada do widget de texto Tkinter

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")

A posição do primeiro caractere no widget Text é 1.0, e poderia ser referido como um número 1.0 ou uma string "1.0".

"end" significa que ele lê a entrada até o final da caixa Texto. Poderíamos também utilizar tk.END em vez da string "end" aqui.

Tkinter recebe a caixa de texto Input_Inculde nova linha

A pequena questão se especificarmos "end" como a posição final do texto a ser devolvido, inclui também o novo caractere de linha \n no final da string de texto, como você pode ver na animação acima.

Poderíamos mudar o argumento "end" do método get para ser o "end-1c" se não quisermos a nova linha na entrada retornada.

"end-1c" significa que a posição é um caractere à frente do "end".

Exemplo de código para buscar a entrada sem a nova linha no final do 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 recebe a caixa de texto Input_Not Inculde nova linha

Aqui, também poderíamos utilizar tk.END+"-1c" além de "end-1c" para eliminar o último caractere - \n, porque tk.END = "end", portanto tk.END+"-1c" é igual a "end"+"-1c"="end-1c".