Интеграция PySQLite с PyGTK TreeView - PullRequest
4 голосов
/ 18 октября 2010

Есть ли какой-нибудь простой способ или как интегрировать базу данных sqlite в gtk.TreeModel (TreeView)?

Что мне нужно, это отображать данные из БД в виде дерева, и было бы неплохо, когда я что-то изменилв БД, чтобы увидеть изменения в дереве и наоборот.

1 Ответ

3 голосов
/ 03 июня 2011

Допустим, вы поместили все свои данные в список элементов:

cur.execute('''select * from warehouse''')
itemlist = cur.fetchall()

Чтобы получить список свойств столбца, выполните:

cur.execute('''PRAGMA table_info(warehouse)''')

Чтобы получить только имена столбцов, вы можете сделать:

colnames = [ i[1] for i in cur.fetchall() ]

Позже вам может понадобиться установить типы в ListStore для TreeView, поэтому сделайте что-то вроде:

coltypes = [ i[2] for i in cur.fetchall() ]
for index, item in enumerate(coltypes):
    if (item == 'char'):
        coltypes[index] = str
    elif (item == 'integer'):
        coltypes[index] = int

Затем поместите всю информацию из вашей базы данных в TreeView:

store = gtk.ListStore(*coltypes)
for act in itemlist:
    store.append(act)

Теперь создайте столбцы для TreeView (скажем, это называется «дерево»):

for index, item in enumerate(colnames):
rendererText = gtk.CellRendererText()
column = gtk.TreeViewColumn(item, rendererText, text=index)
column.set_sort_column_id(index)
tree.append_column(column)

После этого вы должны автоматически сгенерировать виджет TreeView с правильными столбцами и всеми данными. Источник: Продвинутые виджеты в PyGTK

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...