Comment rendre le widget Tkinter Text en lecture seule

Jinku Hu 30 janvier 2023
  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
Comment rendre le widget Tkinter Text 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 retourne 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 Text 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()
Auteur: 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

Article connexe - Tkinter Text