Python Tkinter - добавление значений из столбца дерева - PullRequest
0 голосов
/ 28 августа 2018

В моем графическом интерфейсе есть древовидная структура (n = строки, 3 столбца). Строки продолжают добавляться, когда пользователь вводит значения в метку и нажимает кнопку. Предположим, что пользователь ввел 3 значения, т.е. 3 строки вставляются в мое древовидное представление. Теперь я хотел бы сложить значения в одном столбце и отобразить его в другом ярлыке. Как мне это сделать?

def __init__(self, parent, controller):
    self.entry=ttk.Entry(self,width=10,)
    self.entry.grid(row=2, column=2, ) #value entered by the user and displayed in Temp column
    self.entry1=ttk.Entry(self,width=10,)
    self.entry1.grid(row=2, column=3, )#value entered by the user and displayed in time column
    ttk.Button(self, text='Enter', command=self.insert_data).grid(row=2,column=4, )#calling the method insert data to insert the values entered by the user
    self.tree = ttk.Treeview( self, columns=('Temp','time'))
    self.tree.heading('#0', text='Number')
    self.tree.heading('#1', text='Temp')
    self.tree.heading('#2', text='time')
    self.tree.column('#1', stretch=tk.YES)
    self.tree.column('#2', stretch=tk.YES)
    self.tree.column('#0', stretch=tk.YES)
    self.tree.grid(row=5, columnspan=4, sticky='nsew')
    self.treeview = self.tree
    # Initialize the counter
    self.i = 1

    ttk.Label(self, text='Sum').grid(row=6, column=1, sticky='e') 
    ttk.Label(self,width = 10,).grid(row=6, column=2, sticky="e") #***I want to display the sume of values entered in the column 'Temp' in this label
def insert_data(self):

    self.treeview.insert('', 'end', text=str(self.i), values=(self.entry.get(), self.entry1.get()+"h"))
    # Increment counter
    self.i = self.i + 1 

1 Ответ

0 голосов
/ 29 августа 2018

Если я понимаю, вы хотите рассчитать общее значение, вставленное в столбец treeview. Для этого вам нужно сначала получить содержимое в treeview, используя tree.get_children(), затем выполнить итерацию по нему и использовать index, чтобы получить столбец, который вы хотите суммировать значения. В моем коде это index[0]. Это sum1 += в моей функции означает добавление всех значений в столбце.

Вы можете изменить индекс на [1], см. Общее значение.

import tkinter as tk
import tkinter.ttk as ttk


def my_values_cal():
    sum1 = 0.0
    for child in tree.get_children():
        sum1 += float(tree.item(child, "values")[0])
        lab.config(text=sum1)

        print(sum1)



root = tk.Tk()

tree =ttk.Treeview(root, column=("col1", "col2", "col3"), show="headings")
tree.heading('#1', text='Number')
tree.heading('#2', text='Temp')
tree.heading('#3', text='time')


tree.insert("", tk.END, values=(24, "09", "2:00 AM"))
tree.insert("", tk.END, values=(34, "04", "5:00 AM"))
tree.insert("", tk.END, values=(40, "09", "1:00 PM"))
tree.insert("", tk.END, values=(94, "01", "23:00 PM"))
tree.insert("", tk.END, values=("38", "21", "21:00 AM"))

tree.pack()

lab = tk.Label(root, text="Total")
lab.pack()


b = tk.Button(root, text="CALCULATE", command=my_values_cal)
b.pack()


root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...