¿Cómo puedo bloquear un widget Text
para que el usuario solo pueda seleccionar y copiar texto, pero aún así podría insertar texto en el Text
desde una función o similar?Cómo deshabilitar la entrada a un widget de texto, pero ¿permite la entrada de programación?
Respuesta
¿Ha intentado simplemente deshabilitar el widget de texto?
text_widget.configure(state="disabled")
En algunas plataformas, también es necesario agregar un enlace en <1>
para dar el foco al widget, de lo contrario no aparece el resaltado para copiar:
text_widget.bind("<1>", lambda event: text_widget.focus_set())
Si desactiva el widget , para insertar mediante programación sólo hay que
- cambiar el estado del widget para
NORMAL
- I nsert el texto, y luego
- cambiar el estado de nuevo a
DISABLED
Mientras no se llama a update
en medio de ese entonces no hay manera para que el usuario pueda introducir nada de forma interactiva.
Lo siento, llegué tarde a la fiesta pero encontré esta página buscando la misma solución que usted.
Encontré que si "deshabilita" el widget de texto por defecto y luego lo "normal" al comienzo de una función que le da entrada y "lo desactiva" nuevamente al final de la función.
def __init__():
self.output_box = Text(fourth_frame, width=160, height=25, background="black", foreground="white")
self.output_box.configure(state="disabled")
def somefunction():
self.output_box.configure(state="normal")
(some function goes here)
self.output_box.configure(state="disable")
yo nos topamos con el estado estado de solución = "normal"/= "desactivado", así, sin embargo, entonces no puede seleccionar y copiar texto fuera de él. Finalmente encontré la solución a continuación de: Is there a way to make the Tkinter text widget read only?, y esta solución le permite seleccionar y copiar texto, así como seguir hipervínculos.
import Tkinter
root = Tkinter.Tk()
readonly = Tkinter.Text(root)
readonly.bind("<Key>", lambda e: "break")
- 1. Cómo deshabilitar un tipo de entrada = texto?
- 2. Autocompletar ¿no permite la entrada de texto libre?
- 3. jQuery selector de fechas con el texto de entrada que no permite la entrada del usuario
- 4. ¿Cómo simulo la entrada de texto a un WPF TextBox?
- 5. Perl, deshabilitar la entrada de amortiguación
- 6. Cuadro de entrada HTML - Deshabilitar
- 7. Entrada de entrada personalizada para UITextField, ¿cómo dirijo la entrada de regreso al campo de texto?
- 8. Deshabilitar la entrada de algunos símbolos a JTextField
- 9. ¿Cómo conectar una variable al widget Entrada?
- 10. Texto predeterminado en la entrada
- 11. ¿Cómo puedo alinear la entrada numérica a la derecha y la entrada de texto a la izquierda?
- 12. entrada de texto simple_form
- 13. ¿Cómo esperar la entrada en un campo de texto?
- 14. Cómo deshabilitar la corrección de corrección gramatical en los campos de texto de tipo de entrada
- 15. JQuery Mobile: coloque un botón de entrada junto a un área de texto de entrada
- 16. Proveedor de geolocalización para Firefox que permite la entrada manual
- 17. Texto de entrada de texto deshabilitado
- 18. ¿Solo permite la entrada de datos única con Android SQLite?
- 19. Validador Regex que permite vacío como entrada
- 20. ¿Cómo ocultar una entrada en la barra de tareas pero mantener la forma de la ventana?
- 21. Cómo bloquear la escritura en el texto de entrada?
- 22. jquery texto cambia cuando la entrada cambia
- 23. desactivar la tecla de entrada en la página, pero no en área de texto
- 24. Cómo agregar un marcador de posición a un campo de entrada de texto GWT
- 25. Texto de entrada de AlertDialog
- 26. Añadir texto a los campo de entrada
- 27. Tomando la entrada de la entrada estándar después freopen()
- 28. Cómo deshabilitar el cuadro de texto de entrada de archivo en IE?
- 29. Entrada repetida de entrada a una entrada estándar del proceso
- 30. Cómo verificar la entrada en UITextField (es decir, entrada numérica)
Sí, lo tengo, pero de acuerdo con los documentos, eso permite la entrada de cualquier cosa, incluso desde funciones y cosas así. –
@PsychicOak: por supuesto. Pero para insertar programáticamente, todo lo que necesita hacer es establecer el estado en "normal", insertar el texto y luego restablecer el estado en "deshabilitado". He actualizado mi respuesta para incluir esa información. –
* suspiro * me siento estúpido ahora>.> Jaja ¡gracias! Obtendrás tus puntos cuando me permitan aceptar xD –