Tkinter Tutorials

Criando Widgets de Texto Tkinter Somente Leitura

Spread the love

O widget Text do Tkinter oferece uma maneira flexível de exibir e editar texto, mas às vezes você precisa restringir a interação do usuário. Este artigo explora como criar um widget Text somente leitura no Tkinter, focando nos métodos mais eficientes e diretos.

Criando um Widget Tkinter Text Somente Leitura

A abordagem mais simples e recomendada é usar o atributo state. Definir este atributo como DISABLED impede efetivamente qualquer entrada do usuário, tornando o widget somente leitura.


import tkinter as tk

root = tk.Tk()

text_widget = tk.Text(root, height=10, width=30)
text_widget.insert(tk.END, "Este texto é somente leitura.")
text_widget.config(state=tk.DISABLED)
text_widget.pack()

root.mainloop()

Este trecho de código cria um widget Text, o preenche com algum texto e, em seguida, o desabilita usando text_widget.config(state=tk.DISABLED). Para reativar a edição, basta definir o estado de volta para NORMAL usando text_widget.config(state=tk.NORMAL).

Alternando Dinamicamente o Modo Somente Leitura

Para situações em que você precisa alternar entre os estados somente leitura e editável dinamicamente, você pode facilmente alternar o atributo state:


import tkinter as tk

root = tk.Tk()

text_widget = tk.Text(root, height=10, width=30)
text_widget.insert(tk.END, "Este texto é inicialmente editável.")
text_widget.pack()

def toggle_readonly():
    if text_widget['state'] == tk.NORMAL:
        text_widget.config(state=tk.DISABLED)
        button.config(text="Habilitar Edição")
    else:
        text_widget.config(state=tk.NORMAL)
        button.config(text="Desabilitar Edição")

button = tk.Button(root, text="Desabilitar Edição", command=toggle_readonly)
button.pack()

root.mainloop()

Este exemplo aprimorado adiciona um botão que alterna o widget Text entre os modos somente leitura e editável.

Endereçando Preocupações Comuns

  • Seleção de Texto: Mesmo quando desabilitado, os usuários ainda podem selecionar texto dentro do widget.
  • Copiar-Colar: Desabilitar o widget não impede a funcionalidade de copiar-colar. Técnicas mais avançadas seriam necessárias para restringir completamente isso.
  • Somente Leitura Parcial: O widget Text do Tkinter não suporta tornar apenas partes do texto somente leitura. Para isso, considere usar vários widgets ou uma solução personalizada.

Conclusão

Definir o atributo state como DISABLED é o método mais eficaz e eficiente para criar um widget Text somente leitura do Tkinter. Sua simplicidade e clareza o tornam a abordagem preferida na maioria dos cenários. O exemplo de alternância dinâmica demonstra o quão facilmente você pode gerenciar o comportamento somente leitura em seus aplicativos.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *