¿Cómo suprimir la capacidad del usuario final de editar/agregar/eliminar texto en un widget de texto? (Python v3.2 .. y tkinter)Widget de texto de solo lectura en python3-tkinter; plataforma cruzada
El punto es suprimir solo la capacidad de cambiar/agregar/eliminar texto pero no para castrar otras características. Tal vez un texto NoEdit con ancho sería un nombre mejor.
He intentado .text [ 'estado'] = 'desactivado' y funciona casi Aceptar en Windows (que todavía permite al usuario seleccionar/copiar texto resalta la selección, página arriba/abajo y hacia arriba/botones de abajo funcionan. Lo único roto parece ser el cursor invisible.)
Pero en MacIntosh todo está roto. No se pone de relieve, sin seleccionar/copiar, ... uf
Desde Tkinter no tiene prácticamente ninguna documentación en Python, que haber buscado y encontrado algunos consejos TCL, para derivar una nueva clase y suprimir la inserción y eliminar funciones.
Por lo tanto, he tratado como tal:
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)
Por desgracia, no funcionó bien. Aparentemente tkinter no usa esas funciones de inserción y eliminación cuando el usuario final ingresa/borra el código. Quizás esos TCL insert/delete sean algo más, y perdí algo en la traducción de TCL y swahili. ¿Qué funciones usa tkinter.Text para el texto de edición del usuario final? Esperemos que no sean internos ...
Entonces, ¿hay alguna manera de modificar el widget de texto para suprimir solo la edición del usuario final? ¿Hay alguna manera de hacerlo sin bucear y anular el código interno de Tkinter, para que las siguientes versiones de Tkinter no lo rompan?
Al mirar la ventana del shell Idle, veo que han logrado suprimir ediciones (excepto la última línea). Entonces hay una manera. ¿Pero qué es y qué tan costoso?
OK, tuve la oportunidad de probar en Mac, y el texto.focus_set() vinculado a <1> solucionó el problema, tal como lo dijo. ** ¡Gracias! ** (Quizás esta página se puede limpiar para otros que buscan una solución. Y he visto muchos en la web). Desafortunadamente, como temía, aparentemente era uno de los muchos problemas con el puerto Tkinter para Mac. el color 'verde' no funciona en los botones, el texto en los botones necesita más espacio (este podría estar relacionado con la resolución), etc ... Es fácil solucionarlo, y solo espero que lo peor no aparezca – Momus