Como obter a entrada da caixa de texto Tkinter

Jinku Hu 30 janeiro 2023
  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
Como obter a entrada da caixa de texto Tkinter

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

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

Artigo relacionado - Tkinter Text