问题描述
我正在做包含复选框的程序的一部分。共有8个复选框,用户可以设置最小和最大3个复选框。通过将on-value设置为1来确定要打勾的数量,并在所有复选框之间添加总on-values,这将非常简单。如果不等于3,它将如此表示。
但是,我将特定信息存储在这些复选框中,然后将它们.get()添加到列表中,然后将其放入树视图和MysqL数据库中。
我认为可以解决此问题的一种方法是将offvalue设置为1,然后将所有offvalues相加,如果总offvalue = 5,则表示未选中5个框,因此选中了3个框。但是,我不知道从复选框中同时获得offvalue和onvalue的方法。
任何帮助将不胜感激。
var1 = Intvar()
musiccheck = Checkbutton(frame2,text='Music',variable = var1,onvalue='3',offvalue='1')
musiccheck.pack()
var2 = Intvar()
ecocheck = Checkbutton(frame2,text='Econ',variable = var2,onvalue='5',offvalue='1')
ecocheck.pack()
解决方法
这是一种便宜的方法,但是我能够找到一种方法来首先确定是否选中了3个复选框,然后如果通过,它将继续将它们放在列表中,然后将其放入mysql db和treeview
代码首先检查.box是否选中了该复选框,然后查看其是否等于onvalue,或者如果选中了该复选框。如果是这样,它将被添加到临时列表中。
它将继续检查所有内容并附加所有其他复选框。现在,如果列表是len,如果大于或小于3,它会通知用户,如果列表中有3个值,它将通过。
def check():
var_len = []
print("--")
if var1.get() == 1:
var_len.append(1)
if var2.get() == 2:
var_len.append(2)
if var3.get() == 3:
var_len.append(3)
if var4.get() == 4:
var_len.append(4)
if var5.get() == 5:
var_len.append(4)
if len(var_len) == 3:
print("good")
else:
print("choose 3 items")
print("--")
var1 = IntVar()
musiccheck = Checkbutton(frame2,text='Music',variable = var1,onvalue='1',offvalue='0')
musiccheck.pack()
var2 = IntVar()
ecocheck = Checkbutton(frame2,text='Econ',variable = var2,onvalue='2',offvalue='0')
ecocheck.pack()
var3 = IntVar()
DGTcheck = Checkbutton(frame2,text='DGT',variable = var3,onvalue='3',offvalue='0')
DGTcheck.pack()
var4 = IntVar()
chemcheck = Checkbutton(frame2,text='Chem',variable = var4,onvalue='4',offvalue='0')
chemcheck.pack()
var5 = IntVar()
phycheck = Checkbutton(frame2,text='Phys',variable = var5,onvalue='5',offvalue='0')
phycheck.pack()