【问题标题】:Populating Tcl Treeview with Sqlite Data使用 Sqlite 数据填充 Tcl Treeview
【发布时间】:2009-09-15 14:08:42
【问题描述】:

我正在构建一个读取 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) 会出现标题“名字”和“姓氏”。此外,Sqlite Db 被连接,然后关闭。

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

【问题讨论】:

    标签: database sqlite treeview tcl


    【解决方案1】:

    最好这样做:

    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 很好地集成的事实。

    【讨论】:

      【解决方案2】:

      经过几个小时的反复试验,我终于弄清楚了如何使用 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 是按钮驱动程序。执行时,树会填充名字和姓氏,对应于每一列。

      【讨论】:

        猜你喜欢
        • 2010-09-26
        • 1970-01-01
        • 2017-04-18
        • 1970-01-01
        • 2017-02-02
        • 2015-09-29
        • 2016-08-07
        • 2016-07-23
        相关资源
        最近更新 更多