Python Tkinter批量生成复选框并按字典设置默认勾选状态问题
问题原因
Tkinter的Checkbutton的variable参数只能绑定Tkinter内置的变量类型(比如IntVar()),不能直接绑定普通Python整数,你直接传字典里的0/1无法被组件识别,所以默认勾选不会生效,也没办法后续读取用户的勾选状态。
修正后的完整代码
import os from tkinter import * def create_folders(): for folder_name, var in folder_vars.items(): if var.get() == 1: print(f"创建文件夹:{folder_name}") os.mkdir(folder_name) # 原始配置:键是文件夹名,值是默认是否勾选(1是勾选,0是不勾选) folder_default_config = {"Audio":0,"AVI":0, "Footage":1, "GFX":1, "MP4":1, "MOV":1, "MPG":0, "Photography":1, "Press":1} num_row=0 window = Tk() # 存储每个文件夹对应的IntVar变量 folder_vars = {} window.title("Folder Creation v1.0") window.minsize(300, 200) window.config(padx=100, pady=100) for folder_name, default_val in folder_default_config.items(): num_row +=1 # 初始化IntVar,传入默认值 current_var = IntVar(value=default_val) folder_vars[folder_name] = current_var Checkbutton(window, text=folder_name, variable=current_var).grid(row=num_row, sticky=W) Label(window, text="").grid(column=0, row=10, sticky=W) Button(window, text="Create Folders", command=create_folders).grid(column=0, row=15, sticky=W) Button(window, text="Exit", command=window.destroy).grid(column=1, row=15, sticky=W) window.mainloop()
修改说明
- 新增
folder_vars字典存储每个文件夹对应的IntVar变量,初始化时直接把默认勾选状态作为参数传入IntVar,组件会自动根据这个值设置默认勾选状态 - 调整
create_folders逻辑,通过IntVar的get()方法读取用户最终勾选状态,只有勾选的选项才会创建对应文件夹 - 修复了原代码中
os.mkdir行的缩进错误
内容的提问来源于stack exchange,提问作者zuktoor2
相关产品推荐
相关产品推荐

