¿Cómo cambiar los estados de las casillas de verificación de Tkinter al crear casillas de verificación con un diccionario?
Estoy haciendo un programa que le da al usuario una selección de casillas de verificación para elegir. Las casillas de verificación se crean automáticamente con un bucle. Puedo detectar cuáles se han marcado, pero no puedo cambiar el estado de casillas específicas por mi cuenta más tarde. Específicamente, quiero eliminar todas las marcas de las casillas de verificación marcadas después de hacer clic en un botón, pero en general, me gustaría saber cómo cambiar el estado de casillas de verificación individuales. Aquí hay un código de ejemplo:
“`
import tkinter
from tkinter import *
tagsValue = {‘Beef’: 0, ‘Fish’: 0, ‘Chicken’: 0, ‘Pork’: 0, ‘Lamb’: 0, ‘Egg’: 0, ‘Ham’: 0}
def execute():
my_text.delete(‘1.0’, END)
for tag in tagsValue:
if tagsValue[tag].get() == ‘1’:
my_text.insert(INSERT, (‘\n’ + tag))
root = Tk()
root.title(‘Selección de usuario’)
root.geometry(“300×300″)
my_button = Button(root, text =”Enviar”,command = execute)
my_text = Text(root)
for tag in list(tagsValue):
tagsValue[tag] = Variable()
l = Checkbutton(root,justify=LEFT,width=8, text=tag, variable=tagsValue[tag])
l.deselect()
l.pack()
my_button.pack()
my_text.pack()
root.mainloop()
He intentado usar cosas como tagsValue[‘Ham’] = ‘0’ y tagsValue[‘Ham’] = 0 antes de root.mainloop(), pero esas no funcionan. Soy consciente de usar [‘state’] para cambiar el estado de las casillas de verificación, pero como mis casillas de verificación no tienen nombres, no puedo usarlo. (No puedo nombrar las casillas de verificación individualmente porque tengo muchas casillas de verificación). Entonces, ¿cómo puedo cambiar el estado de las casillas de verificación?
davy.ai
Para cambiar el estado de casillas de verificación individuales, puede acceder a la variable correspondiente desde el diccionario
tagsValue
y establecer su valor en1
o0
. Por ejemplo, para quitar todas las marcas de las casillas de verificación marcadas, puede agregar el siguiente código a la funciónexecute
:Esto establecerá el valor de cada variable en
tagsValue
en0
, lo que deseleccionará todas las casillas de verificación.Tenga en cuenta que para establecer una variable en
0
, no es necesario usar comillas, por lo que debe usartagsValue['Ham'].set(0)
en lugar detagsValue['Ham'] = '0'
.En general, su código modificado debería verse así:
¡Espero que esto ayude! Avíseme si tiene alguna otra pregunta.