获取复选框tkinter的价值的问题

时间:2019-05-24 11:42:27

标签: python checkbox tkinter

我正在尝试获取tkinter中复选框的值,以便可以将这些复选框中的数据导出到excel电子表格中

我尝试让复选框迭代生成(如当前)并手动创建它们,但是无论我做什么,都无法让它们给出我的值(无论是否选中),真的让我感到压力。

def check():
    for movie in movies():
        print(button.get())

Button(moviewindow,text="Check",command=check).pack(anchor=S)
for movie in movies():
            var1 = IntVar() 
            button = Checkbutton(moviewindow,
                        bg=moviewindow_bg,
                        font=("Times",23),
                        onvalue=1,
                        offvalue=0,
                        text=movie.replace("<strong>","").replace("</strong>",""),
                        variable=var1).pack(anchor=W)

我希望代码显示1或0,但是我无法获取复选框返回其值。

2 个答案:

答案 0 :(得分:1)

您需要将变量(可能还有按钮)存储在某个地方。当前正在发生什么:

您创建一个运行功能Button的{​​{1}}。在check中,您遍历电影,然后尝试从check获取值。您应该从button获得价值,但这不是这里的主要问题。主要问题是 var1仅包含最后创建的var1,因此循环将仅重复创建的最后一个复选框的值。

在不知道对象IntVar是什么的情况下,很难说出在这里进行处理的最佳方法。如果movie是一个类对象,则可以更改其属性。如果它是可哈希对象,则可以执行以下操作。

代码上方的某个位置:为电影和var之间的关联创建一个dict

movie

修复checkbox_vars = {} 以使用此字典

check

在循环中,将变量存储在字典中

def check():
    for movie in movies():
        print(checkbox_vars[movie].get())

这仍然是一种微不足道的方法,但是它应该说明您如何真正在var1 = IntVar() # Store the variable in checkbox_vars, for this specific movie checkbox_vars[movie] = var1 / buttonvar1之间创建一个关联,而不是隐式的

答案 1 :(得分:0)

使用TableControllerStudent获取复选框的当前值。

要在选中按钮更新后立即打印该值,请在按钮的invoke方法内使用它。