0

我在一个循环中生成了许多 ttk.Spinbox 实例,并且可以毫无困难地使每个实例都独立于其他实例“工作”。我希望能够保持每旋转框的运行总和,其中某些的权重高于其他列。这是试图完成此任务的示例代码。

# spinboxes.py

import tkinter as tk 
from tkinter import ttk 

root = tk.Tk()
j = 0

rows = ['test', 'test2']
columns = ['1','2']
for row in rows:
    label = ttk.Label(root, text=row)
    label.grid(row=j, column=0)
    i=1
    running_total = ttk.Entry(root)
    running_total.insert(0,0)
    for col in columns: 
        label = ttk.Label(root, text=col)
        label.grid(row=j, column=i)
        
        def update(inc):
            total = running_total
            current = int(total.get())
            total.delete(0, tk.END) 
            total.insert(0, current + inc)
            
        spinbox_1 = ttk.Spinbox(root, from_=0, to=50,command=lambda: update(1)) # multiples of 1
        spinbox_2 = ttk.Spinbox(root, from_=0, to=50,command=lambda: update(5)) # multiples of 5
        
        spinbox_1.grid(row=j, column=i+1)
        spinbox_2.grid(row=j, column=i+2)
        i+=3

    running_total.grid(row=j,column=i)
    j+=1

root.mainloop()

问题是它似乎总是更新创建的最新 running_total Entry 对象。我假设在循环内定义更新函数将确保每对旋转框都有一个“唯一”命令,但无法弄清楚如何使其按预期工作。这是一张突出问题的图片。

如您所见,总和正在正确计算,但我想确保每行都有自己的运行总计

4

0 回答 0