我正在尝试获取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,但是我无法获取复选框返回其值。
答案 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
/ button
和var1
之间创建一个关联,而不是隐式的
答案 1 :(得分:0)
使用TableControllerStudent
获取复选框的当前值。
要在选中按钮更新后立即打印该值,请在按钮的invoke方法内使用它。