我在一个循环中生成了许多 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 对象。我假设在循环内定义更新函数将确保每对旋转框都有一个“唯一”命令,但无法弄清楚如何使其按预期工作。这是一张突出问题的图片。