2009-09-15 57 views
1

我正在构建一个读取Sqlite Db的Tcl应用程序。目前,我可以使用Tcl前端将数据输入到数据库中。现在,我想弄清楚如何在Tcl前端显示Sqlite Db中的数据。使用Sqlite数据填充Tcl Treeview

经过一点研究,我发现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 
} 

当执行“检索”程序(按钮事件),树形视图(Z1)出现与标题名字和姓氏。此外,Sqlite Db连接,然后关闭。

我想添加代码,从Sqlite Db中填充树状视图,连接到Db和打包树视图(z1)之间。有谁知道使用Sqlite中的数据填充Tcl treeview的正确语法吗?

回答

1

经过几个小时的反复试验,我终于想出了如何用sqlite数据填充treeview小部件。不幸的是,我无法找到任何网络资源,因此如果任何人有这个问题,答案如下:

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是按钮驱动程序。执行时,树会填入与每列对应的名字和姓氏。

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的集成了非常漂亮确实是事实。