确定有多少复选按钮被勾选也存储信息

determine how many checkbuttons are ticked that also store information

我正在制作包含复选框的程序的一部分。总共有 8 个复选框,用户可以设置最少和最多 3 个复选框。这样就很简单了,通过设置on-value为1来判断勾选了多少,然后把所有的checkbox的on-values总和相加,如果不等于3,就这么说。

但是,我将特定信息存储在这些复选框中,我 .get() 这些并将它们添加到列表中,然后我将其放入树视图和 mysql 数据库中。

我认为我可以解决这个问题的一种方法是将关闭值设置为 1,然后添加所有关闭值,如果总关闭值 = 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 数据库和树视图。

代码首先检查复选框是否被选中。获取复选框,然后查看它是否等于 onvalue,或者换句话说,它是否被选中。如果是,它将附加到临时列表中。

它继续检查所有并附加所有其他复选框。现在我if 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()