You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Common Lisp LTK Scrolled-TreeView添加列及插入数据报错求助

解决LTK中Scrolled-TreeView初始化报错的问题

错误原因

你遇到的Invalid initialization argument: :columns错误,是因为LTK:SCROLLED-TREEVIEW类并不支持:columns初始化参数。:columns是普通LTK:TREEVIEW类的专属初始化参数,而Scrolled-TreeView只是给普通TreeView包装了滚动条的容器类,本身不负责配置表格列。

另外原代码中treeview-insert的调用也不完整,LTK的treeview-insert需要指定父节点(根节点用空字符串""表示)和插入位置(比如:end表示追加到末尾),否则无法正确插入数据。

修正后的代码方案

方案1:先创建配置好的TreeView,再用Scrolled-TreeView包裹

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

(with-ltk ()
  (let* ((tree (make-instance 'treeview :columns '(0 1 2)))
         (scrolled-tree (make-instance 'scrolled-treeview :widget tree)))
    ; 设置列标题
    (treeview-heading tree 0 "Name")
    (treeview-heading tree 1 "Math-mark")
    (treeview-heading tree 2 "Comp-mark")
    ; 插入学生成绩记录
    (treeview-insert tree "" :end :values '("Simon Due" "78" "60"))
    (treeview-insert tree "" :end :values '("Kato Ronald" "80" "90"))

    ; 让滚动表格填充窗口并支持拉伸
    (pack scrolled-tree :fill :both :expand t)
  )  
)

方案2:直接操作Scrolled-TreeView内部的TreeView组件

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

(with-ltk ()
  (let* ((scrolled-tree (make-instance 'scrolled-treeview)))
    (let ((tree (treeview scrolled-tree)))
      ; 为内部TreeView配置列
      (configure tree :columns '(0 1 2))
      ; 设置列标题
      (treeview-heading tree 0 "Name")
      (treeview-heading tree 1 "Math-mark")
      (treeview-heading tree 2 "Comp-mark")
      ; 插入学生成绩记录
      (treeview-insert tree "" :end :values '("Simon Due" "78" "60"))
      (treeview-insert tree "" :end :values '("Kato Ronald" "80" "90"))
    )
    ; 让滚动表格填充窗口并支持拉伸
    (pack scrolled-tree :fill :both :expand t)
  )  
)

关键说明

  • Scrolled-TreeView的核心功能是提供滚动支持,表格的列配置、数据插入等操作都需要针对其内部的TreeView组件进行。
  • treeview-insert的第一个参数是父节点ID,根节点用空字符串"";第二个参数指定插入位置,:end表示追加到现有记录的末尾。

内容的提问来源于stack exchange,提问作者Karugaba118

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 21:42:46