# TreeView와 TreeStore(Python)

Marta Maria Casetti
mmcasetti@gmail.com 2012
TreeStore를 표시하는 TreeView(더 간단한 예제)
조성호
shcho@gnome.org 2017-2019.

# 더 간단한 TreeView와 TreeStore

이 TreeView에서는 TreeStore의 내용을 표시합니다.

# 예제 결과를 만드는 코드

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)

# the data are stored in the model # create a treestore with one column store = Gtk.TreeStore(str) for i in range(len(books)): # the iter piter is returned when appending the author piter = store.append(None, [books[i][0]]) # append the books as children of the author j = 1 while j < len(books[i]): store.append(piter, [books[i][j]]) j += 1

# the treeview shows the model # create a treeview on the model store view = Gtk.TreeView() view.set_model(store)

# the cellrenderer for the column - text renderer_books = Gtk.CellRendererText() # the column is created column_books = Gtk.TreeViewColumn( "Books by Author", renderer_books, text=0) # and it is appended to the treeview view.append_column(column_books)

# the books are sortable by author column_books.set_sort_column_id(0)

# add the treeview to the window 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)

# TreeView 위젯에 쓸만한 메서드

TreeView 위젯은 Model/View/Controller 방식으로 설계했습니다. Model은 데이터를, View는 바뀐 내용 알림을 받은 후의 모델의 내용을, 마지막으로 Controller는 모델의 상태를 바꾸고 뷰에게 바뀐 모델의 상태를 알리는 코드를 담습니다. 자세한 내용과 TreeModel에 대한 쓸만한 메서드 목록을 보시려면 를 참고하십시오.

# API 참고서

이 예제는 다음 참고자료가 필요합니다:

GtkTreeView

GtkTreeModel

GtkTreeStore

GtkCellRendererText

GtkTreeViewColumn