# TreeView s TreeStore (Python)

Marta Maria Casetti
mmcasetti@gmail.com 2012
TreeView zobrazující TreeStore (jednodušší příklad)

# Jednoduchý TreeView s TreeStore

Tento TreeView zobrazuje TreeStore.

# Kód použitý k vygenerování tohoto příkladu

from gi.repository import Gtk from gi.repository import Pango import sys

books = [["Tolstoy, Leo", "War and Peace", "Anna Karenina"], ["Shakespeare, William", "Hamlet", "Macbeth", "Othello"], ["Tolkien, J.R.R.", "The Lord of the Rings"]]

class MyWindow(Gtk.ApplicationWindow):

def __init__(self, app): Gtk.Window.__init__(self, title="Library", application=app) self.set_default_size(250, 100) self.set_border_width(10)

# Data jsou uchována v modelu # Vytvoří TreeStore s jedním sloupcem store = Gtk.TreeStore(str) for i in range(len(books)): # Iterátor piter je vrácen, když je přidán autor piter = store.append(None, [books[i][0]]) # Přidá knihu jako potomka k autorovi j = 1 while j < len(books[i]): store.append(piter, [books[i][j]]) j += 1

# TreeView zobrazuje model # Vytvoří TreeView založené na modelu view = Gtk.TreeView() view.set_model(store)

# Vykreslovač pro sloupec - text renderer_books = Gtk.CellRendererText() # Vytvoří sloupec column_books = Gtk.TreeViewColumn( "Books by Author", renderer_books, text=0) # a přidá jej do TreeView view.append_column(column_books)

# Knihy lze řadit podle autorů column_books.set_sort_column_id(0)

# Přidá stromové zobrazení do okna self.add(view)

class MyApplication(Gtk.Application):

def __init__(self): Gtk.Application.__init__(self)

def do_activate(self): win = MyWindow(self) win.show_all()

def do_startup(self): Gtk.Application.do_startup(self)

app = MyApplication() exit_status = app.run(sys.argv) sys.exit(exit_status)

# Užitečné metody pro widget TreeView

Widget `TreeView` je navrže okolo návrhu Model/Zobrazení/Ovládání: Model uchovává data, Zobrazení získává upozornění a zobrazuje obsah modelu a konečně Ovládání změní stav modelu a upozorňuje zobrazení na tyto změny. Podrobnější informace a seznam užitečných metod pro stromové zobrazení najdete v .

# Odkazy k API

V této ukázce se používá následující:

GtkTreeView

GtkTreeModel

GtkTreeStore

GtkCellRendererText

GtkTreeViewColumn