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

如何在Common Lisp LTK列表框中显示多行内容?

LTK列表框实现多行文本显示的解决方案

问题原因分析

  1. 最初的代码未配置列表框的换行属性,导致~%(换行符)被视为普通文本字符,无法触发换行。
  2. 尝试嵌入ltk:text组件的方式错误:列表框的项只能是字符串类型,直接传入组件对象会显示其打印表示,而非文本内容。

正确实现方法

要让单个列表项内的文本多行显示,只需为listbox设置wrap属性并指定换行规则(word按单词换行,char按字符换行),同时确保列表框有足够高度容纳多行内容:

(ltk:with-ltk ()
  (let ((listbox (make-instance 'ltk:listbox :wrap 'word)))
    (ltk:listbox-append listbox (format nil "This~%is~%some~%multiline~%text."))
    (ltk:configure listbox :height 5) ; 手动设置高度以匹配多行内容
    (ltk:pack listbox :fill :both :expand t)))

另一种场景:每行作为独立列表项

如果需要将每一行文本作为单独的列表项,可拆分字符串后逐个添加:

(ltk:with-ltk ()
  (let ((listbox (make-instance 'ltk:listbox)))
    (dolist (line '("This" "is" "some" "multiline" "text."))
      (ltk:listbox-append listbox line))
    (ltk:pack listbox)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 12:15:06