首页 > 解决方案 > LTK Scrolled Frame 滚动条未调整大小

问题描述

由于缺少文档,有时甚至是不正确的文档,Ltk 被证明非常令人沮丧。(您会发现按钮样式选项不起作用)

我正在尝试制作一个包含 NxN 多个按钮的简单滚动框架。不幸的是,滚动条似乎从来没有“得到它”。当您在容器中塞入太多东西时,它会自动提供滚动机制,这似乎很简单。很长一段时间以来,我们一直在 TUI 和 GUI 中这样做。

任何人都可以修复下面给出的代码吗?如果您能弄清楚如何为按钮着色混合颜色,则可以加分。

<code>
(defun run-demo ()
  (with-ltk ()
    (wm-title *tk* "NxN Button Tray")
    (set-geometry *tk* 480 320 0 0)
    (let* ((sw (make-instance 'scrolled-frame :master *tk*)))
      (dotimes (y 20)
        (dotimes (x 20)
          (let* ((b (make-instance 'button
                                   :master (canvas sw)
                                   :text (format nil "(~a,~a)" x y))))
               (grid b x y))))
      (pack sw))))
</code>

这是问题的屏幕截图。滚动条拒绝查看其内部小部件需要滚动。

滚动条不展开

非常感谢您对它的打击......真诚的,Pixel_Outlaw

标签: common-lisptksbclltk

解决方案


我相信其他人也会遇到同样的问题。答案是使用以下(内部 w)访问器。我只是通过浏览邮件列表的档案发现的。不过,陪审团仍然在配色方案上。

(defun run-demo ()
  (with-ltk ()
    (wm-title *tk* "NxN Button Tray")
    (set-geometry *tk* 480 320 0 0)
    (let* ((sw (make-instance 'scrolled-frame :master *tk*)))
      (dotimes (y 20)
        (dotimes (x 20)
          (let* ((b (make-instance 'button
                                   :master (interior sw) ;push inside here!
                                   :text (format nil "(~a,~a)" x y))))
               (grid b x y))))
      (pack sw))))

推荐阅读