【问题标题】:python How to sum all the numbers in a treeview columnpython如何对treeview列中的所有数字求和
【发布时间】:2020-09-14 13:37:58
【问题描述】:

我需要将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()

【问题讨论】:

  • 你的图片中 no1 和 no2 的总和应该是 10+10,那 100 怎么算?你的意思是产品吗?为什么要在t3 上插入一个数字让系统这样做你呢?
  • 我只是手动输入的。我总共需要 100 个。
  • 你想让它自动完成吗?
  • 自动和基于按钮

标签: python python-3.x tkinter


【解决方案1】:

这是一种做你想做的事情的方法,

首先制作一个按钮和一个功能:

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)

这将在代码开始时调用该函数。

Above extra answer taken from here

如果您不想要按钮,则删除按钮及其功能,只需更改您的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')

希望这有帮助,如果有任何疑问或错误,请告诉我。

干杯

【讨论】:

  • 我需要 tkinter gui 中的总数
  • 查看视频列表here。我就是这样学习的。
  • 无论如何,如果您能将此标记为正确答案,将不胜感激
  • 我已经更新了我的答案,如果你想要整个代码,请告诉我
  • 再次更新答案
猜你喜欢
  • 1970-01-01
  • 2021-11-23
  • 2017-03-06
  • 2023-03-24
  • 2019-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多