确定打勾的同时也存储信息的复选按钮

问题描述

我正在做包含复选框的程序的一部分。共有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()