You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 10:24:04