Como obter a entrada da caixa de texto Tkinter

  1. Exemplo de código para obter a entrada do widget de texto Tkinter
  2. Exemplo de código para buscar a entrada sem a nova linha no final do Tkinter Text Widget

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

Artigo relacionado - Tkinter Text

  • Como excluir o conteúdo da caixa de texto Tkinter
  • Como fazer com que o widget Tkinter Text seja apenas de leitura