¿Cómo hacer que un texto específico no se pueda quitar en tkinter?

En este artículo, discutiremos cómo hacer que un texto específico no se pueda eliminar en Tkinter. Pero antes déjanos saber qué nos proporciona Tkinter.

Instalación

Para instalar este módulo, escriba el siguiente comando en la terminal.

pip install tk

Operación de validación de entrada en Tkinter

Antes de continuar con la sintaxis de texto no extraíble, se debe comprender cómo funciona Validación de entrada. La tarea del comando de validación es restringir el texto que se puede ingresar dentro de un widget de Entrada. 

Python3

import tkinter as tk
  
def text_only(entered_data):
    return entered_data.isalpha()
  
root = tk.Tk()
  
# the dimensions of the GUI window
root.geometry("300x300")
root.resizable(False, False)  # fixed size for GUI
  
# create a function and pass in register
# the function is to check the validation of Tkinter Box
valid = root.register(text_only), '%S'
entry_box = tk.Entry(validate="key", validatecommand=valid)
entry_box.pack()
  
# end GUI window with root.mainloop()
root.mainloop()

La especialidad del código anterior es que el cuadro de entrada solo acepta alfabetos, es decir, letras. Si intenta ingresar un dígito o un carácter especial, no lo aceptará. Los puntos clave para llevar son estas dos líneas de código.

valid = root.register(text_only),'%S'
entry_box = tk.Entry(validate="key", validatecommand=valid)

Valid es una variable que se asigna a la función de validación para el cuadro de entrada. Eso significa que root.register toma una función como parámetro. El método root.register() devuelve una string (solo alfa) que se asigna a una variable ‘válida’ que se usa para llamar a la función de devolución de llamada en las etapas posteriores cuando se activa la pulsación de tecla en un cuadro de Entrada. ‘%S’ en la opción de comando de validación significa que el carácter insertado o eliminado se pasa como argumento a la función text_only(). Dentro del widget de entrada, asignamos un comando de validación a una tecla . El valor de » clave » especifica que la validación se produce cada vez que cualquier pulsación de tecla (entrada desde el teclado) cambia el contenido del widget. Ahora, cuando se presiona una tecla en el widget de entradase activa el comando de validación que realiza la operación de la función text_only(). 

Con esta lógica en mente, procedamos con la fase final de hacer que un texto sea inamovible. 

Texto no removible en Tkinter

Para hacer que un texto específico sea inamovible, crearemos un widget de entrada. Inserte un mensaje dentro de un widget de entrada que no sea extraíble y luego cree una función que verifique la condición si el widget de entrada comienza con ese mensaje específico. Y esta función se pasa como argumento dentro del método root.register. Esta vez pasamos “ %P ” que denota el valor que tendrá el texto si se permite el cambio. El widget de entrada debe pasarse con el comando de validación que activa la pulsación de tecla. 

Ejemplo:

Python3

import tkinter as tk
  
def non_removable_text(text):
    
    # Enter Your Name is non-removable Text
    return text.startswith("Enter Your Name:")
  
root = tk.Tk()
root.geometry("300x300")
root.resizable(False, False)
  
# define a function with non-removable text
# '%P' denotes the value that the text will
# have if the change is allowed.
valid = root.register(non_removable_text), "%P"
  
# create a Entry widget with a validate of key
# key-specify keystroke
entry = tk.Entry(validate='key', validatecommand=(valid))
  
# add a message
entry.insert("end", "Enter Your Name:")
entry.place(x=0, y=100, width=300)
  
root.mainloop()

Producción:

Publicación traducida automáticamente

Artículo escrito por jaintarun y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *