Виджет «Текст только для чтения» в python3-tkinter; кросс-платформенный

Как подавить возможность конечного пользователя редактировать / добавлять / удалять текст в текстовый виджет? (Python v3.2 .. и tkinter)

Смысл в том, чтобы подавить только возможность изменять / добавлять / удалять текст , но не кастрировать другие функции. Возможно, лучше было бы использовать NoEdit Text widged.

Я пробовал .text ['state'] = 'disabled' , и он работает почти OK в Windows (он по-прежнему позволяет пользователю выбирать / копировать текст, выделяет выделение , работают кнопки перехода на страницу вверх / вниз и вверх / вниз. Единственное, что сломано, это курсор, который стал невидимым.)

Но на MacIntosh все сломано. Нет выделений, нет выбора / копирования, ... UGH

Поскольку у Tkinter практически нет документации на Python, я поискал и нашел несколько советов TCL, чтобы получить новый класс и подавить вставку и удалить функции.

Итак, я пробовал вот так:

class roText(tk.Text):
    def insert(self,*args,**kwargs):
        print(" Hey  - Im inside roText.insert")
        pass
    def delete(self,*args,**twargs):
        pass    
    def pInsert(self,*args,**twargs):
        super().insert(*args,**twargs)

К сожалению, это не сработало. Очевидно tkinter не использует эти функции вставки и удаления, когда конечный пользователь вводит / удаляет код. Возможно, эти вставки / удаления TCL - это что-то еще, и я что-то потерял при переводе с TCL и суахили. Какие функции tkinter.Text использует для редактирования текста конечным пользователем? Надеюсь, они не внутренние ...

Итак, есть ли способ изменить виджет «Текст», чтобы запретить редактирование только конечным пользователем? Есть ли способ сделать это, не углубляясь внутрь и не переопределяя внутренний код Tkinter, чтобы ничего не изменилось. Не будут ли нарушены следующие выпуски Tkinter?

Глядя на окно оболочки Idle, я вижу, что им удалось подавить редактирование (за исключением последней строки). Так что выход есть. Но что это такое и насколько дорого?

6
задан Michael J. Barber 31 October 2011 в 11:11
поделиться