Как сделать так, чтобы виджет Tkinter Text был только для чтения

  1. Установите Текст Состояние disable, чтобы заставить Tkinter Текст только читать
  2. Привяжите любое нажатие клавиши к функции break, чтобы сделать Tkinter Text только для чтения

Мы познакомим вас с методами, позволяющими сделать виджет Tkinter Text доступным только для чтения,

  1. Установите состояние Текст, чтобы быть disable
  2. Привяжите любое нажатие клавиши к функции break

Установите Текст Состояние disable, чтобы заставить Tkinter Текст только читать

Виджет Text становится доступным только для чтения после того, как его состояние настроено на 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()

По умолчанию виджет Text имеет состояние NORMAL, что означает, что пользователь может редактировать, добавлять, вставлять или редактировать текстовое содержимое в нем.

readOnlyText.configure(state='disabled')

Вам необходимо изменить состояние виджета Text на DISABLED, чтобы сделать его доступным только для чтения. Любая попытка изменить текст внутри этого виджета будет беззвучно проигнорирована.

Предупреждение

Вам необходимо изменить состояние с disabled на normal, если вы собираетесь обновить содержимое виджета Текст, иначе он будет оставаться доступным только для чтения.

Привяжите любое нажатие клавиши к функции break, чтобы сделать Tkinter Text только для чтения

Если мы привяжем любой ход клавиши к функции, которая возвращает только break к виджету Text, мы сможем получить тот же результат, что и Text, который становится доступен только для чтения.

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()
Внимание

Отличие этого решения от вышеуказанного заключается в том, что здесь не работает CTRL+C. Это означает, что вы не можете ни редактировать содержимое, ни копировать его.

Нам нужно сделать исключение CTRL+C для функции, связывающей с Text, если CTRL+C желательно.

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()

Сопутствующая статья - Tkinter Text

  • Как получить входную информацию из текстового поля Tkinter
  • Как удалить содержимое текстовой коробки Tkinter
  • Как установить шрифт текстового виджета Tkinter
  • Как настроить виджет для ввода текста с помощью кнопки
  • Сопутствующая статья - Tkinter

  • Как получить входную информацию из текстового поля Tkinter
  • Как удалить содержимое текстовой коробки Tkinter
  • Как установить шрифт текстового виджета Tkinter
  • Как настроить виджет для ввода текста с помощью кнопки
  • comments powered by Disqus