Comment rendre le widget Tkinter Text en lecture seule

  1. Mettre l’état Text à disable pour que Tkinter Text soit en lecture seule
  2. Liez toute pression de touche à la fonction break pour que Tkinter Text soit en lecture seule

Nous allons présenter des méthodes pour rendre le widget Tkinter Text en lecture seule,

  1. Définissez l’état Text comme étant disable.
  2. Lier n’importe quelle pression de touche à la fonction break.

Mettre l’état Text à disable pour que Tkinter Text soit en lecture seule

Le widget Text devient en lecture seule après que son état soit défini comme disable.

import tkinter as tk
root = tk.Tk()
readOnlyText = tk.Text(root)
readOnlyText.insert(1.0,"ABCDEF")
readOnlyText.configure(state='disabled')
readOnlyText.pack()

root.mainloop()

L’état par défaut d’un widget Text est NORMAL, ce qui signifie que l’utilisateur peut y éditer, ajouter, insérer ou modifier du contenu texte.

readOnlyText.configure(state='disabled')

Vous devez changer l’état du widget Text en DISABLED pour qu’il soit en lecture seule. Toute tentative de changer le texte à l’intérieur de ce widget sera silencieusement ignorée.

Avertissement

Vous devez changer l’état de disabled à normal si vous avez l’intention de mettre à jour le contenu du widget Text, sinon, il reste en lecture seule.

Liez toute pression de touche à la fonction break pour que Tkinter Text soit en lecture seule

Si nous lions n’importe quelle touche à la fonction qui ne renvoie que break au widget Text, nous pourrions obtenir le même résultat que le Text devient en lecture seule.

import tkinter as tk
root = tk.Tk()
readOnlyText = tk.Text(root)
readOnlyText.insert(1.0,"ABCDEF")
readOnlyText.bind("<Key>", lambda a: "break")
readOnlyText.pack()

root.mainloop()
Attention

La différence entre cette solution et la solution ci-dessus est que le CTRL+C ne fonctionne pas ici. Cela signifie que vous ne pouvez ni éditer le contenu ni le copier.

Nous devons faire l’exception de CTRL+C à la fonction liant au Texte si CTRL+C est désiré.

import tkinter as tk

def ctrlEvent(event):
    if(12==event.state and event.keysym=='c' ):
        return
    else:
        return "break"

root = tk.Tk()
readOnlyText = tk.Text(root)
readOnlyText.insert(1.0,"ABCDEF")
readOnlyText.bind("<Key>", lambda e: ctrlEvent(e))
readOnlyText.pack()

root.mainloop()

Article connexe - Tkinter Text

  • Comment obtenir les données de la boîte de texte Tkinter
  • Article connexe - Tkinter

  • Comment définir la police de caractères du widget de texte Tkinter
  • comments powered by Disqus