Как получить в список определенные строки treeview в tkinter
Всем добрый день! Коллеги нужен ваш совет! Пишу программу для фильтрации данных на tkinter. Возник вопрос с treeview. (я его пытался описать ранее но видимо не правильно сформулировал...)
у нас есть таблица со строками treeview.
В эту таблицу мы вносим значения:
def Update():
text = Serial_text.get()
parametr = choice_parametr.get()
tree_4.set(tree_4.selection()[0], 1, parametr)
tree_4.set(tree_4.selection()[0], 2, text)
После чего я хочу получить эти данные:
for k in tree_4.get_children():
test = tree_4.item(k)["values"]
new_list = []
new_list.append(test)
filter_1 = [t for t in new_list if len(t) == 3]
print(filter_1)
На выходе я получаю следующее:
[['job_id', '=', 4564]]
[]
[]
[['status', '!=', 'qwerty']]
[]
[]
[]
[]
[]
[]
- программа в переменную
filter_1загоняет все строки из treeview в том числе пустые и все они формата list. В связи с чем у меня два вопроса как удалить пустые элементы (пробовал все в том числе иnull) и привести данные к одному списку. Большое спасибо!!!
Ответы (1 шт):
Автор решения: gord1402
→ Ссылка
Вероятно, вы хотите вот такую реализацию:
from tkinter import *
from tkinter import ttk
ws = Tk()
tv = ttk.Treeview(ws, columns=(1, 2, 3), show='headings', height=8)
tv.pack()
tv.heading(1, text="f")
tv.heading(2, text="g")
tv.heading(3, text="h")
tv.insert(parent='', index=0, values=("rg", "dsgd", 100.00))
tv.insert(parent='', index=1, values=("anl", "e2", 10.00))
tv.insert(parent='', index=2, values=("ank", "3", 40.00))
tv.insert(parent='', index=3, values=())
tv.insert(parent='', index=4, values=("ti", "4", 20.00))
data = []
for k in tv.get_children():
test = tv.item(k)["values"]
if type(test) is list and len(test) == 3:
data.append(test)
print(data)
ws.mainloop()
Вывод:
[['rg', 'dsgd', '100.0'], ['anl', 'e2', '10.0'], ['ank', 3, '40.0'], ['ti', 4, '20.0']]