HOWTO · Tkinter
Como obter a entrada da caixa de texto Tkinter
Este artigo explora como obter a entrada de uma caixa de texto Tkinter usando o método get. Aprenda a especificar índices de início e fim para uma recuperação precisa de texto, implementar validação e melhorar os seus aplicativos Python com interfaces amigáveis. Descubra exemplos de código práticos e explicações detalhadas para capturar de forma eficaz a entrada do usuário nos seus projetos Tkinter.
Nesta página
Para ler um widget Text do Tkinter, chame o seu método get com um índice de início e um índice de fim. Para o conteúdo completo, use text_box.get("1.0", "end-1c"): 1.0 marca o início, e end-1c deixa de fora a quebra de linha final do widget.
Recuperar texto com o widget Text do Tkinter
Esta janela completa permite que um usuário insira várias linhas e as recupere com um botão. O callback mantém a string retornada em user_input; substitua a chamada a print pelo processamento de que o seu aplicativo precisa.
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()
Este exemplo de GUI não é executado nas evidências de runtime fornecidas; a explicação segue a semântica de índices do Tkinter.
O primeiro índice é inclusivo e o índice de fim marca onde a recuperação para. O get também aceita um único índice; sem um índice de fim, ele retorna o caractere nessa posição em vez de todo o widget.
Escolher índices de início e fim
Os índices de texto do Tkinter usam uma forma line.column. 1.0 significa o primeiro caractere da primeira linha, enquanto 2.0 significa o início da segunda linha. Portanto, text_box.get("1.0", "2.0") seleciona a primeira linha, incluindo a sua quebra de linha quando presente. Escolha uma linha e uma coluna posteriores para ler um intervalo menor. A posição de fim não é incluída no texto retornado.
Excluir a quebra de linha final
Um widget Text sempre mantém uma quebra de linha no final, mesmo quando o usuário não digitou texto. Ler até "end" inclui essa quebra de linha final. Use "end-1c" como índice de fim para omitir apenas esse último caractere; a expressão Tkinter equivalente é tk.END + "-1c". Esta distinção importa ao comparar o valor recuperado, salvá-lo ou passá-lo para código que não deve receber uma quebra de linha extra.
Validar a entrada recuperada
Quando o aplicativo requer conteúdo significativo, verifique uma vista aparada da string: if not user_input.strip():. Isso trata a entrada composta apenas por espaços em branco como vazia. Mantenha user_input inalterado se o espaçamento original ou as quebras de linha forem importantes; use o valor aparado apenas para a verificação, a menos que o seu aplicativo queira intencionalmente normalizar o texto do usuário. Mostre feedback na interface quando a verificação falhar, e continue a processar o valor original quando ela passar.