首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用带有复选按钮的字典(框一次全部更新,字典中的值不更新)

使用带有复选按钮的字典(框一次全部更新,字典中的值不更新)
EN

Stack Overflow用户
提问于 2021-04-07 16:44:58
回答 2查看 34关注 0票数 0

我正在尝试创建一个带有tkinter的GUI,其中包含几个复选框。与这些复选框相关联的变量应该存储在一个公共字典中(参见下面的示例)。到目前为止,我的代码的问题是,当只单击其中一个复选框时,所有复选框都会同时更新,并且字典中的值不会更新。

代码语言:javascript
代码运行次数:0
运行
复制
import tkinter as tk
config = {"option0": False, "option1": False}

root = tk.Tk()

def print_values():
    print(config["option0"])
    print(config["option1"])

chk_option0 = tk.Checkbutton(master=root, text='option0', variable=config["option0"], onvalue=True, offvalue=False)
chk_option0.grid(row=0, column=0, sticky = "W")

chk_option1 = tk.Checkbutton(master=root, text='option1', variable=config["option1"], onvalue=True, offvalue=False)
chk_option1.grid(row=1, column=0, sticky = "W")

btn_Print = tk.Button(master=root, text="Print values", command=lambda : print_values())
btn_Print.grid(row=2, column=0, sticky = "W")

root.mainloop()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-07 17:00:39

对于config字典的值,应该使用BooleanVar()而不是False

代码语言:javascript
代码运行次数:0
运行
复制
import tkinter as tk

root = tk.Tk()

config = {"option0": tk.BooleanVar(), "option1": tk.BooleanVar()}

def print_values():
    print(config["option0"].get())
    print(config["option1"].get())

chk_option0 = tk.Checkbutton(master=root, text='option0', variable=config["option0"], onvalue=True, offvalue=False)
chk_option0.grid(row=0, column=0, sticky = "W")

chk_option1 = tk.Checkbutton(master=root, text='option1', variable=config["option1"], onvalue=True, offvalue=False)
chk_option1.grid(row=1, column=0, sticky = "W")

btn_Print = tk.Button(master=root, text="Print values", command=lambda : print_values())
btn_Print.grid(row=2, column=0, sticky = "W")

root.mainloop()
票数 1
EN

Stack Overflow用户

发布于 2021-04-07 17:02:16

如果您想要存储复选框的输出,则必须使用BooleanVar()初始化变量。(同样,如果分别使用int和string设置OFF值和ON值,则IntVar()StringVar()也存在)。最后,您必须使用.get()函数来获取存储在其中的值。

代码语言:javascript
代码运行次数:0
运行
复制
import tkinter as tk

config = {"option0": False, "option1": False}

root = tk.Tk()

def print_values():
    print(config["option0"].get())
    print(config["option1"].get())

config["option0"] = tk.BooleanVar()
config["option1"] = tk.BooleanVar()
chk_option0 = tk.Checkbutton(master=root, text='option0', variable=config["option0"], onvalue=True, offvalue=False)
chk_option0.grid(row=0, column=0, sticky = "W")

chk_option1 = tk.Checkbutton(master=root, text='option1', variable=config["option1"], onvalue=True, offvalue=False)
chk_option1.grid(row=1, column=0, sticky = "W")

btn_Print = tk.Button(master=root, text="Print values", command=lambda : print_values())
btn_Print.grid(row=2, column=0, sticky = "W")

root.mainloop()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66982520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档