python - 如何使用 Python 从 TKinter 的 Treeview 中的列中获取所有值
问题描述
我有一张在 Tkinter 中使用 Treeview 制作的表格。我想将第 6 列中的所有值加在一起,并将该数字显示在输入框中。我怎样才能做到这一点?我不知道从树视图表中获取值然后以有意义的方式使用它们。.get() 不存在, .get_children 根本不起作用。谢谢你的帮助!
from tkinter import *
from tkinter import ttk
f1= tk()
root.geometry("750x500")
Invoice_Maker = LabelFrame(f1, text = "Invoice")
Invoice_Maker.grid(row=8,column=0,columnspan=4)
Qty_Label = Label(Invoice_Maker, text = " Qty:")
Qty_Label.grid(row=0,column=0)
Quantity_Box = Entry(Invoice_Maker, width=15)
Quantity_Box.grid(row=0,column=1)
clicked = StringVar()
clicked.set("Select Item")
Dropdown = OptionMenu(Invoice_Maker, clicked, "Bandana", "Du-Rag/Stocking cap",
"Winter Hats", "Gloves", "A-shirt", "Belt",
"Capdana", "Mask", "Sleeve","T-shirt RoundNeck", "T-shirt V-Neck",
"T-shirt LongSleeve","Japanese Hat", "Sunglass", "Small Straw Hat", "Cap",
"Bucket Hat", "Safari Hat", "Large Straw Hat", "Banded Straw Hat",
"Neon T-Shirt", "Panama Jack", "Lady Hats", "Fedora", "Straw Hat Ranchero",
"Team Hats", "Speedy Hat", "Misc", "Bike Tires", "Machetes", "Balones")
Dropdown.grid(row=0, column=2)
Style_Label = Label(Invoice_Maker, text = "Style:")
Style_Label.grid(row = 0, column = 3)
StyleMenu = StringVar()
StyleMenu.set("N/A")
Style = OptionMenu(Invoice_Maker,StyleMenu, "Plain","Camo","Neon")
Style.grid(row=0,column=4)
Cost_Label = Label(Invoice_Maker,text = "Cost:")
Cost_Label.grid(row=0,column=5)
Cost = Entry(Invoice_Maker, width=7)
Cost.grid(row=0, column=6)
Retail_Label = Label(Invoice_Maker,text = "Retail:")
Retail_Label.grid(row=0,column=7)
Retail = Entry(Invoice_Maker, width=7)
Retail.grid(row=0, column=8)
Inv_Frame = LabelFrame(Invoice_Maker, bg="red")
Inv_Frame.grid(row=1,column=0,columnspan=10)
global Trv
Trv = ttk.Treeview(Inv_Frame)
Trv.pack(side=RIGHT)
Trv["columns"] = ("2","3","4","5","6")
Trv.column("#0", width = 40)
Trv.column(1, width = 80)
Trv.column(2, width = 80)
Trv.column(3, width = 80)
Trv.column(4, width = 80)
Trv.column(5, width = 80)
Trv.column(6, width = 80)
Trv.heading("#0", text="#", anchor=W)
Trv.heading(1, text="Quantity", anchor=W)
Trv.heading(2, text="Item", anchor=W)
Trv.heading(3, text="Style", anchor=W)
Trv.heading(4, text="Cost", anchor=W)
Trv.heading(5, text="Retail", anchor=W)
Trv.heading(6, text="Total", anchor=W)
Scroll = Scrollbar(Inv_Frame, orient="vertical", command=Trv.yview)
Scroll.pack(side=LEFT, fill="y")
def Add_Item():
Trv.insert("",END,text=Quantity_Box.get(), values=(clicked.get(),StyleMenu.get(),Cost.get(),
Retail.get(),str(float(Quantity_Box.get())*float(Cost.get()))))
Total_Label = Label(Invoice_Maker, text="Total: ")
Total_Label.grid(row=3,column=8)
Total_Box = Entry(Invoice_Maker,width=10)#This is where I want the total of the numbers in row 6 to go
Total_Box.grid(row=3,column=9)
解决方案
您可以使用Treeview.set()
来获取特定单元格的内容。
因此,您可以按以下方式计算总数:
def calc_total():
total = sum(float(Trv.set(item,6)) for item in Trv.get_children())
Total_Box.delete(0, 'end')
Total_Box.insert('end', total)
如果calc_total()
您想更新Total_Box
.
推荐阅读
- c# - onClick 在单击另一个文本时更改文本颜色并返回颜色
- react-native - 如何在本机反应中删除webview中的页脚
- php - 如何根据数据库中的设置值检查复选框?
- c# - 如何在 Blazor 中设置“导航项处于活动状态”?
- sql-server - SQL Server 中的 BIT_XOR ,cast_to_raw 等效项
- python - 如何在有时间限制的python中运行一个函数?
- javascript - 如何从带有索引数组的firebase获取数据?反应/Node.js
- python - 如何将图像蒙版叠加到原始图像上但仅显示蒙版边界框?
- c++ - 如何测试我的方法是否返回正确的向量?
- groovy - 有人可以在文档中解释 Groovy 命令链 dsl 示例吗...文本被解析为映射和闭包