如何在 Common Lisp ltk 树视图中添加列和插入数据

问题描述 投票:0回答:1

我正在尝试使用滚动树视图创建一个表,以包含学生的表现,但我未能向其中添加特定列(名称、数学标记、比较标记)。

我尝试了以下代码,但它返回错误

;; test.lisp
(ql:quickload :ltk)
(in-package :ltk)

(with-ltk ()
    (let* ((tree (make-instance 'scrolled-treeview :columns '(0 1 2)) ))
        ; Adding the heading to the column
        (treeview-heading tree 0 "Name") 
        (treeview-heading tree 1 "Math")
        (treeview-heading tree 2 "COMP")
        ; Adding record to the created table.
        (treeview-insert tree :values '("Simon Due" "78" "60"))
        (treeview-insert tree :values '("Kato Ronald" "80" "90"))

        (pack tree)
    )  
)

我希望返回一个带有两条记录的滚动树视图。 下面是我加载 test.lisp 时遇到的错误

Invalid initializattion argument: :columns
in call for class #<STANDARD-CLASS LTK:SCROLLED-TREEVIEW>
treeview common-lisp ltk
1个回答
0
投票

我找不到 Ltk 的示例,但我有一个

nodgui

然而,虽然 Ltk 有滚动树视图,但它不支持

:columns
参数。

API 是:

(make-instance 'scrolled-treeview
               :columns (list "col1" "col2"))

然后

(treeview-insert-item tree :text "text" :column-values (list "other" "columns"))

参见:

开发人员说明:我发现将 GUI 代码包装在函数中更简单,因为我们可以编译该函数并获取错误和警告,而无需运行 Tk 窗口并获取错误。

这给了我们一个简单的滚动树视图:

#++
(ql:quickload :nodgui)

(in-package :nodgui)

(defun run ()
 (with-nodgui ()
    (let* ((tree (make-instance 'scrolled-treeview :columns '("col1" "col2")) ))
      (treeview-insert-item tree :text "one" :column-values (list "two" "three"))
      (pack tree))))

buuuut 这将创建一个包含 3 列的表,“col1”是第 第二 列的名称。我必须解决这个问题。我认为我在一个例子中得到了正确的结果。

© www.soinside.com 2019 - 2024. All rights reserved.