Em computação, um tree view (literalmente do inglês vista de árvore) é um elemento de interface gráfica (isto é um componente widget) que permite ao usuário mostrar dados hierárquicos em forma de árvore, expandir ou recolher os ramos e nós. Dependendo do wiget toolkit ou aplicação em uso, existem muitos estilos de apresentação gráfica de tree views.
TreeView
O Widget ttk.Treeview exibe uma coleção hierárquica de itens. Cada item tem um rótulo de texto, uma imagem opcional, e uma lista opcional de valores de dados. Os valores dados são exibidas em colunas sucessivas após o rótulo árvore.
Exemplo:
Neste exemplo usamos uma visão de arvore para exibir uma discografia musical, você pode abrir e fechar os nós do modelo de dados em visão de árvore, um duplo clique do mouse em cada nó dispara um evento para que exibe a descrição do nó corrente em um rodapé.
Python
#!/usr/bin/env python
# -*- coding: latin-1 -*-
# Desenvolvimento Aberto
# Treeview.py
# importa modulo
from Tkinter import *
from ttk import *
# Cria formulario
formulario = Tk()
formulario.title = "Desenvolvimento Aberto"
# declara variaveis e arrays
albumB = "Please, Please Me";
MusicaB = [ "I Saw Her Standing There", "Misery", "Anna (Go to Him)",
"Chains" , "Boys" , "Ask Me Why", "Please Please Me", "Love Me Do" ,
"P.S. I Love You", "Baby It's You", "Do You Want To Know A Secret?",
"A Taste of Honey", "There's A Place", "Twist and Shout" ]
albumR = "The Rolling Stones";
MusicaR =[ "Route 66", "I Just Want to Make Love to You", "Honest I Do",
"Mona (I Need You Baby)", "You Can Make It If You Try", "Little by Little",
"I\'m a King Bee", "Carol", "Tell Me (You \'re Coming Back)", "Can I Get a Witness",
"Tell Me (You\'re Coming Back)", "Walking the Dog" ]
# Evento duplo clique do treeview
def duplo_clique(*args):
item = disco.selection()[0]
rodape["text"] = disco.item(item,"text")
# Cria componentes
rotulo = Label(formulario, text="Duplo clique em um node da arvore:")
rodape = Label(formulario, text="Evento do mouse")
disco = Treeview(formulario)
# Define tamanho da coluna
disco.column("#0",minwidth=0,width=250)
# Cria barra de rolagem
barra = Scrollbar(formulario, orient='vertical', command=disco.yview)
# Adiciona barra de rolagem
disco.configure(yscroll=barra.set)
barra.pack( side = RIGHT, fill=Y )
# Cria cabeçario do treeview
disco.heading('#0', text='Primeiro Album', anchor='w')
# Insere Node principal
titulo = disco.insert('', 'end', text="Discografia", open=False)
# Insere nodes filhos
bandaB = disco.insert(titulo, 'end', text="Beatles")
bandaR = disco.insert(titulo, 'end', text="Rolling Stones")
# Insere variaveis
album1 = disco.insert(bandaB, 'end', text=albumB)
album2 = disco.insert(bandaR, 'end', text=albumR)
# Insere Arrays
b=0
r=0
for b in MusicaB:
disco.insert(album1, 'end', text=b)
for r in MusicaR:
disco.insert(album2, 'end', text=r)
# Cria evento duplo clique
disco.bind("<Double-Button-1>", duplo_clique)
# Posiciona componentes no formulario
rotulo.pack(padx=20, pady=5)
disco.pack(padx=20, pady=10)
rodape.pack(padx=20, pady=5)
# loop do tcl
mainloop()



Se houvesse duas ou mais colunas na lista e eu quisesse recuperar o valor de apenas uma coluna para a Label, como eu faria?
Conceitualmente uma lista tem apenas uma coluna com seus objetos e um indice interno marcando a posição, mas vc quer uma lista contendo outras listas:
matrix = [
… [1, 2, 3, 4],
… [5, 6, 7, 8],
… [9, 10, 11, 12],
… ]
Resultado:
>>> [[row[i] for row in matrix] for i in range(4)]
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
Neste caso vc poderia pegar o indice da sua matriz e adicionar dentro do node desejado do tree view sem problemas.
Espero ter ajudado.
Abs.