2015-02-23 311 views
1

我想稍後迭代Treeview中的數據。然後我希望能夠對它進行分類。Python Tkinter Treeview - 迭代'get_children'輸出

from tkinter import * 
from tkinter.ttk import * 
import pickle 

root = Tk() 

def treeData(event): 
    children = tree.get_children() 
    print(children) 

entry = StringVar() 
a = Entry(root, textvariable=entry) 
a.grid(column=0,row=0) 
a.bind("<Key>", function) 

file_data = [] 
file = open('data.dat', 'rb') 
while True: 
    try: 
     file_data.append(pickle.load(file)) 
    except EOFError: 
     break 
file.close() 

column_names = ("Column 1", "Column 2") 
tree = Treeview(root, columns=column_names) 
tree['show'] = 'headings' 
for x in file_data: 
    a = tree.insert('', 'end', values=x) 
for col in column_names: 
    tree.heading(col, text=col) 

tree.grid(column=0, row=1) 

在功能上,被稱爲 'treeData' 當我打印(兒童),其輸出類似於這樣的列表 - ( 'I001', 'I002', 'I003', 'I004')

我希望有人會知道如何將這些數據片段轉換爲Treeview中實際顯示的內容?

感謝,

+2

沒有例子或dummy.dat的虛擬版本不能幫助很多。 – Marcin 2015-02-24 01:09:10

回答

7

你所要求的正式Tkinter的documentation for the Treeview widget被記錄在案。

get_children方法返回一個項目ID列表,每個孩子一個。 treeview的item方法將返回給定項目的數據字典。因此,你可以使用類似這樣的方式遍歷值:

for child in tree.get_children(): 
    print(tree.item(child)["values"]) 
+0

再次感謝 – tester 2015-02-24 15:14:01

+0

這裏有趣的是,據我瞭解,'I001','I002'等默認的'iid'值是Tkinter提供的,如果沒有提供任何東西。現在,有趣的部分開始於某人(那將是我)在填充樹時使用列表索引(似乎是一種繞過將選定項目轉換回源自它的對象的麻煩的好方法)並得到一個絕妙的想法項目'0'反而產生'I001'。可能Tkinter爲'iid'提供'0'作爲不提供任何東西。至少這是我的猜測。 – 2018-02-02 23:24:04