Заполнение Tcl Treeview данными Sqlite

Я создаю приложение Tcl, которое считывает Sqlite Db. В настоящее время я могу вводить данные в базу данных, используя интерфейс Tcl. Теперь я пытаюсь понять, как отображать данные в Sqlite Db из внешнего интерфейса Tcl.

После небольшого исследования я обнаружил, что виджет treeview хорошо подойдет для моих нужд. Теперь у меня есть следующий код:

set z1 [ttk::treeview .c1.t1 -columns {1 2} -show headings]
$z1 heading #1 -text "First Name"
$z1 heading #2 -text "Last Name"

proc Srch {} {global z1
    sqlite3 db test.db
    pack $z1
    db close
}

Когда выполняется процедура «Srch» (событие кнопки), отображается древовидная структура (z1) с заголовками «Имя» и «Фамилия». Кроме того, Sqlite Db подключается, а затем закрывается.

Я хотел добавить код, который заполнял бы древовидную диаграмму из Sqlite Db между подключением к Db и упаковкой treeview (z1). Кто-нибудь знает правильный синтаксис для заполнения дерева Tcl данными из Sqlite?


person DFM    schedule 15.09.2009    source источник


Ответы (2)


Лучше сделать так:

proc Srch {} {
    global z1
    pack $z1
    foreach col {first last} name {First Last} {
        $z1 heading $col -text $name
    }
    sqlite3 db test.db
    db eval {SELECT first,last FROM t1} {
        $z1 insert {} end -values [list $first $last]
    }
    db close
}

Здесь используется тот факт, что SQLite действительно очень хорошо интегрируется с Tcl.

person Donal Fellows    schedule 01.04.2010

После нескольких часов проб и ошибок я наконец понял, как заполнить виджет treeview данными sqlite. К сожалению, мне не удалось найти никаких веб-ресурсов, поэтому, если у кого-то еще есть эта проблема, ответ будет следующим:

set z1 [ttk::treeview .c1.t1 -columns {first last} -show headings]

proc Srch {} {
    global z1
    sqlite3 db test.db
    pack $z1
    set data [db eval {SELECT * FROM t1}]
    foreach col {first last} name {First Last} {
        .c1.t1 heading $col -text $name
    }
    foreach {first last} $data {
        .c1.t1 insert {} end -values [list $first $last]
    }
    db close
}

По сути, z1 - это список из нескольких столбцов (дерево), а Srch - это процедура, управляемая кнопкой. При выполнении дерево заполняется именем и фамилией, соответствующими каждому столбцу.

person DFM    schedule 15.09.2009