[ Foro de Python ]
Hola.
Tengo una duda con el siguiente codigo:
from tkinter import ttk
import tkinter as tk
class CheckbuttonForEntry(ttk.Checkbutton):
"""
Checkbutton para deshabilitar un Entry.
"""
def __init__(self, *args, **kwargs):
self._var = tk.BooleanVar(value=True)
kwargs["variable"] = self._var
self.entry = kwargs.pop("entry")
super().__init__(*args, **kwargs)
self.config(command=self.clicked)
def clicked(self):
entry.config(state=tk.NORMAL if self._var.get() else tk.DISABLED)
root = tk.Tk()
entry = ttk.Entry()
checkbutton = CheckbuttonForEntry(
text="Entry activado",
entry=entry
)
entry2 = ttk.Entry()
checkbutton2 = CheckbuttonForEntry(
text="Entry2 activado",
entry=entry2
)
checkbutton.grid(row=0,column=0)
entry.grid(row=2, column=1)
checkbutton2.grid(row=1,column=0)
entry2.grid(row=3, column=1)
root.mainloop()
A grandes rasgos, entiendo que funciona haciendo que cada Checkbutton habilite o deshabilite un Entry,
Pero hay unas lineas en particular que no entiendo. De esta inicializacion:
def __init__(self, *args, **kwargs):
self._var = tk.BooleanVar(value=True)
kwargs["variable"] = self._var
self.entry = kwargs.pop("entry")
super().__init__(*args, **kwargs)
self.config(command=self.clicked)
En particular estas lineas no las comprendo:
kwargs["variable"] = self._var
self.entry = kwargs.pop("entry")
Si alguien pudiera explicarlo, se agradece.
Saludos
hola ruso
no tengo idea de tkinter vaya poca idea
pero lo que dices no saber es simplemente:
- añadir un elemento más al diccionario kwargs
kwargs["variable"] = self._var
- y pop le da el valor de la llave entry del diccionario a
la variable entry de la instancia de clase y borra la llave del diccionario
self.entry = kwargs.pop("entry")
espero te sirva de ayuda
suerte ;-)
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)