Заполнение Tcl Treeview Sqlite Data - PullRequest
       13

Заполнение Tcl Treeview Sqlite Data

1 голос
/ 15 сентября 2009

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

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

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 и упаковкой древовидной структуры (z1). Кто-нибудь знает правильный синтаксис для заполнения дерева просмотра Tcl данными из Sqlite?

Ответы [ 2 ]

2 голосов
/ 01 апреля 2010

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

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.

1 голос
/ 15 сентября 2009

После нескольких часов проб и ошибок я наконец понял, как заполнить виджет древовидной структуры данными 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 - процедура, управляемая кнопками. После выполнения дерево заполняется именами и фамилиями, соответствующими каждому столбцу.

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