リスト2014年9月7日 | |
![]() ファイル内容リストを作ります。gtk.TreeView を使います。 list = gtk.TreeView() リストの作成には gtk.ListStore() を使います。 store = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_UINT) list.set_model(store) gtk.ListStore() の引数は、列の数だけ列のデータタイプを指定しています。列の ID を次のように定義しています。 COLUMN_ITEM = 0 COLUMN_NUM = 1 列を追加します。
renderer = gtk.CellRendererText()
renderer.set_data("column", COLUMN_ITEM)
column = gtk.TreeViewColumn(
"Item", renderer,
text=COLUMN_ITEM)
list.append_column(column)
renderer = gtk.CellRendererText()
renderer.set_data("column", COLUMN_NUM)
renderer.set_property("editable", True)
column = gtk.TreeViewColumn(
"Num", renderer,
text=COLUMN_NUM)
list.append_column(column)
set_data() で、後で使うために列 ID を設定しています。gtk.TreeViewColumn() の第 3 引数以降は属性のペアの列です。"Num" の列について、set_property() で "editable" に True を指定することで、列を編集可能にしています。編集された値を設定できるように、"edited" イベントを拾っておきます。
renderer.connect("edited", cellEdited, store)
リストに項目を追加します。
iter = store.append()
store.set(iter,
COLUMN_ITEM, "apple",
COLUMN_NUM, 1)
iter = store.append()
store.set(iter,
COLUMN_ITEM, "lemon",
COLUMN_NUM, 2)
set() の第 3 引数以降は列の ID と値のペアです。 編集された値を有効にするには、"edited" イベントのコールバック関数で以下のようにします。
def cellEdited(cell, path, text, store):
column = cell.get_data("column")
if column == COLUMN_NUM:
iter = store.get_iter(path)
store.set(iter, COLUMN_NUM, int(text))
列の ID (set_data() で設定しておいたもの) を取得し、目的の列であれば、値を更新します。 | |
| PENGUINITIS | |