如果 python 中的复选框是使用循环制作的,我如何对它们的值求和?

How can i sum the values of checkboxes in python if they were made using a loop?

最近我编写了一个代码,它根据我放入列表 list.Items 中的项目添加复选框,该列表由连接到整数的字符串组成,因此带有复选框的 window 看起来像这样: London(3.40) New York(2.20) California(1.2) etc.What 我现在想做的是制作一个按钮,单击该按钮时会对复选框中的整数求和。 注意:我有两个列表,一个列表是整数列表 Example = [1.2,3.4,2.45,2.4],另一个列表是项目列表 Items = ["London","New York","California","Toronto"],在它们与另一个列表中的循环连接后,该列表由 Items(Value) i制作了一个循环,根据该连接列表中的项目数量生成复选按钮。

我不知道如何在循环中实现 get() 函数,以便当我单击几个复选框时它会对它们求和并通过按钮 Sum 打印它们。 可以通过哪些方式实现?

代码示例:

Values = [1.2,3.4,5.4]
Items = ["London","Lisbon","Athens"]

Connect = ['%.2f', % i for i in Values]

while i != len(Connect):
    Items[i] = Items[i]+"(" + Connect[i] + ")"
    i = i+ 1

for j in range(len(Values)):
    items = tkinter.Checkbutton(window, text=Items[j], onvalue=1, offvalue=0)

从现在开始,我需要制作一个函数来对选中的复选框求和,并在单击“求和”按钮后打印求和。 感谢您对转发的帮助!

只需将复选按钮或关联变量存储在一个循环中。然后您可以遍历循环以获取值。

由于您想要创建代表非 1 或 0 数字的复选按钮,我建议您将复选按钮的值设置为实际值而不是 1。

例如,您可以像这样创建复选按钮:

vars = []
for label, value in zip(Items, Values):
    var = tk.DoubleVar(value=0)
    vars.append(var)
    cb = tk.Checkbutton(root, text=label, onvalue=value, offvalue=0, variable=var)
    cb.pack(side="top", anchor="w")

有了vars中的变量,我们可以通过获取每个变量的值,然后将它们相加来求和:

def do_sum():
    values = [var.get() for var in vars]
    result = sum(values)
    print("sum:", result)