Un TreeView es fundamentalmente un contenedor de
objetos de columna TreeViewColumn e intérpretes de celda
CellRenderer que son los responsables de llevar a cabo en
último término la visualización de los datos del almacén de datos. También aporta una interfaz
para las filas de datos mostradas y para las características que controlan la visualización de
esos datos.
Un TreeView se crea utilizando su constructor:
treeview = gtk.TreeView(model=None)
donde model es un objeto que implementa la interfaz
TreeModel (generalmente un
ListStore o TreeStore). Si
model es None o no se especifica, entonces
el TreeView no estará asociado a un almacén de datos.
El modelo de árbol que proporciona el almacén de datos de un
TreeView puede obtenerse utilizando el método
get_model() :
model = treeview.get_model()
Un TreeModel puede asociarse simultáneamente
con más de un TreeView, que cambia automáticamente su
visualización en el memento en el que cambian los datos del
TreeModel. Mientras que unTreeView
siempre muestra todas las filas de su modelo de árbol, permite mostrar selectivamente
algunas de las columnas. Ello significa que dos TreeViews asociados
al mismo TreeModel pueden realizar visualizaciones completamente
distintas de los mismos datos.
Es también importante darse cuenta de que no existe relación preestablecida
entre las columnas de un TreeView y las columnas de su
TreeModel. Por tanto, la quinta columna de los datos de un
TreeModel pueden mostrarse en la primera columna de un
TreeView y en la tercera columna de otro.
Un TreeView puede cambiar su modelo de árbol utilizando
el método set_model() :
treeview.set_model(model=None)
donde model es un objeto que implementa la interfaz
TreeModel
(p.e. ListStore y
TreeStore). Si model es
None, entonces se descarta el modelo actual.
TreeView tiene una serie de propiedades que
se pueden gestionar utilizando sus métodos:
| "enable-search" | Lectura-Escritura | Si es TRUE, el usuario puede hacer búsquedas a traves de
las columnas de forma interactiva. Por defecto es TRUE |
| "expander-column" | Lectura-Escritura | La columna usada para el elemento de expansión. Por defecto es 0 |
| "fixed-height-mode" | Lectura-Escritura | Si es TRUE, asume que todas las filas tiene la misma altura, lo
que acelera la visualización. Disponible a partir de GTK+ 2.4.
Por defecto es FALSE |
| "hadjustment" | Lectura-Escritura | El control Adjustment (ajuste) horizontal del control.
Se crea uno nuevo por defecto. |
| "headers-clickable" | Escritura | Si es TRUE, entonces los encabezados de las columnas
responden a los eventos de click. Por defecto es FALSE |
| "headers-visible" | Lectura-Escritura | Si es TRUE, entonces muestra los botones de encabezado
de columna. Por defecto es TRUE |
| "model" | Lectura-Escritura | El modelo del tree view. Por defecto es None |
| "reorderable" | Lectura-Escritura | Si es TRUE, la vista es reorganizable.
Por defecto es FALSE |
| "rules-hint" | Lectura-Escritura | Si es TRUE, entonces indicar al motor de temas que dibuje
las filas en colores alternados. Por defecto es FALSE |
| "search-column" | Lectura-Escritura | Indica la columna del modelo en la que buscar cuando se hace a través de código. Por defecto es -1. |
| "vadjustment" | Lectura-Escritura | El Adjustment (ajuste) vertical para el control.
Se crea uno nuevo por defecto. |
Los métodos correspondientes son:
enable_search = treeview.get_enable_search() treeview.set_enable_search(enable_search) column = treeview.get_expander_column() treeview.set_expander_column(column) hadjustment = treeview.get_hadjustment() treeview.set_hadjustment(adjustment) treeview.set_headers_clickable(active) headers_visible = treeview.get_headers_visible() treeview.set_headers_visible(headers_visible) reorderable = treeview.get_reorderable() treeview.set_reorderable(reorderable) riles_hint = treeview.get_rules_hint() treeview.set_rules_hint(setting) column = treeview.get_search_column() treeview.set_search_column(column) vadjustment = treeview.get_vadjustment() treeview.set_vadjustment(adjustment)
La función de la mayoría de ellos resulta obvia por su descripción. Sin embargo, la propiedad "enable-search" necesita que se haya definido correctamente la propiedad "search-column" como un número de una columna válida del modelo de árbol. Entonces, cuando el usuario o usuaria pulsa Control+f aparece un diálogo de búsqueda en el que se puede escribir. Se selecciona la primera fila coincidente a medida que se teclea..
Análogamente, la propiedad "headers-clickable" realmente solamente fija la
propiedad "clickable" de las columnas TreeViewColumns
subyacentes. Una TreeViewColumn no será ordenable salvo
que su modelo de árbol implemente la interfaz TreeSortable
y se haya llamado el método TreeViewColumn
set_sort_column_id() con un número válido de columna.
La propiedad "reorderable" permite que usuarios y usuarias reordenen el modelo
TreeView arrastrando y soltando las filas mostradas del
TreeView.
La propiedad "rules-hint" no debe establecerse salvo en el caso de tener muchas columnas y cuando resulte útil mostrarlas con colores alternos.