python如何对treeview列中的所有数字求和

python如何对treeview列中的所有数字求和,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,我需要对Treeview的“总和”列中的所有数字求和: 代码是: from tkinter import ttk import tkinter as tk from tkinter import* def update(): listBox.insert('','end',value=('APL', t1.get(),t2.get(),t3.get())) root = tk.Tk() root.geometry('1000x600') e8 = tk.Label(root,te

我需要对Treeview的“总和”列中的所有数字求和:

代码是:

from tkinter import ttk
import tkinter as tk
from tkinter import*

def update():
    listBox.insert('','end',value=('APL', t1.get(),t2.get(),t3.get()))

root = tk.Tk()
root.geometry('1000x600')

e8 = tk.Label(root,text="APL").grid(row=1,column=0)
t1 = tk.Entry(root)
t1.grid(row=1,column=1)
t2 = tk.Entry(root)
t2.grid(row=1,column=2)
t3 = tk.Entry(root)
t3.grid(row=1,column=3)

cols = ('name', 'No1', 'No2', 'total sum')
listBox = ttk.Treeview(root, columns=cols, show='headings')

for col in cols:
    listBox.heading(col, text=col)
    listBox.grid(row=1, column=0, columnspan=2)
    listBox.place(x=10, y=300)

b = tk.Button(root,text='Update Listbox',command=update)
b.grid(row=3)

root.mainloop()

这里有一个方法来做你想做的事

通过制作按钮和功能开始:

b1 = tk.Button(root,text='Add Listbox',command=add)
b1.grid(row=4)
然后,
add()
可以是:

def add():
    total = 0.0

    for child in listBox.get_children():
        total += float(listBox.item(child, 'values')[3])
    
    lbl = Label(root,text=total,font=('helvetica',18))
    lbl.grid(row=5)
这将在最后一列中打印项目总数

提示:

您可以将“总和”输入框自动插入到第三个输入框中

def added():
    # Sets the sum of values of e1 and e2 as val of e3
    try :
        sum_tk.set((int(t1.get().replace(' ', '')) + int(t2.get().replace(' ', ''))))
    except :
        pass
    
    root.after(1, added) # reschedule the event
    return
然后您应该定义类似的内容,并将代码更改为下面的内容

sum_tk = tk.StringVar()
t3 = tk.Entry(root,textvariable=sum_tk)
t3.grid(row=1,column=3)
在代码的末尾,添加

root.after(1,added)
这将在代码开始时调用函数

如果不需要按钮,请删除按钮及其功能,只需更改
update()
,如下所示

def update():
    if t1.get() == '' or t2.get() == '' or t3.get() == '':
        pass
    else:
        listBox.insert('','end',value=('APL', t1.get(),t2.get(),t3.get()))
    total = 0.0
    try:
        for child in listBox.get_children():
            total += float(listBox.item(child, 'values')[3])
    except:
        pass
    print(total)
    lbl = Label(root,text=total,font=('helvetica',21))
    lbl.grid(row=5)

    t1.delete(0,'end')
    t2.delete(0,'end')
    t3.delete(0,'end')
希望这对我有所帮助,如果有任何疑问或错误,一定要让我知道


干杯

你的图像中的no1和no2的总和应该是10+10,那100是怎么回事?你是指产品吗?为什么要在
t3
上插入一个数字?让系统为你做吧?我只是手工输入的。我需要100的总数。你想它是自动完成的吗?自动和按钮基我需要在tkinter吉他总数看看视频列表。这就是我学习的方式。无论如何,如果你能将此标记为正确答案,我将不胜感激。我更新了我的答案,如果你想要完整的代码,请让我知道更新的答案,再次