【问题标题】:determine how many checkbuttons are ticked that also store information确定勾选了多少个也存储信息的复选按钮
【发布时间】:2020-09-28 08:59:30
【问题描述】:

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

【问题讨论】:

  • 您可以查看StringVar()的值,例如var1.get()

标签: python tkinter tk


【解决方案1】:

这是一种便宜的方法,但我能够找到一种方法来首先确定是否选择了 3 个复选框,然后如果通过,它将继续将它们放入一个列表中,然后我将其放入 mysql db 和 treeview .

代码首先检查该框是否通过 .get 复选框被选中,然后查看它是否等于 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()

【讨论】:

  • 为什么不简单地使用计数器而不是使用列表var_len 并检查其长度。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-05
  • 1970-01-01
  • 1970-01-01
  • 2020-06-16
  • 1970-01-01
  • 2013-02-21
相关资源
最近更新 更多