1

Sqlite Db を読み取る Tcl アプリケーションを構築しています。現在、Tcl フロントエンドを使用してデータベースにデータを入力できます。現在、Tcl フロントエンドから Sqlite Db 内のデータを表示する方法を見つけようとしています。

少し調査した結果、ツリービュー ウィジェットが私のニーズに適していることがわかりました。私は今、次のコードを持っています:

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) が表示され、First Name と Last Name の見出しが表示されます。さらに、Sqlite Db が接続されてから閉じます。

Db への接続とツリービュー (z1) のパッキングの間に、Sqlite Db からツリービューを設定するコードを追加したいと考えました。TclツリービューにSqliteからのデータを入力する正しい構文を知っている人はいますか?

4

2 に答える 2

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と非常にうまく統合されているという事実を利用しています。

于 2010-04-01T00:00:28.007 に答える
1

数時間の試行錯誤の末、私はついにツリービューウィジェットにsqliteデータを取り込む方法を見つけました。残念ながら、Webリソースが見つからなかったため、他の誰かがこの問題を抱えている場合の答えは次のとおりです。

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はボタン駆動のプロシージャです。実行されると、ツリーには各列に対応する名前と名前が入力されます。

于 2009-09-15T19:34:12.553 に答える