Common lisp LTK滚动帧滚动条未调整大小

Common lisp LTK滚动帧滚动条未调整大小,common-lisp,tk,sbcl,ltk,Common Lisp,Tk,Sbcl,Ltk,事实证明,Ltk非常令人沮丧,因为缺少文档,有时文档不正确。 (您会发现按钮样式选项不起作用) 我试图制作一个简单的滚动框架,其中包含许多按钮。 不幸的是,滚动条似乎从未“理解”。 当你把太多东西塞进一个容器时,它会自动提供一个滚动机制,这似乎是一个不需要动脑筋的问题。我们已经在TUIs和GUIs做了很长时间了 有人能修复下面给出的代码吗?如果你能想出如何用混合颜色给按钮上色,你就可以获得额外的积分 <code> (defun run-demo () (with-ltk ()

事实证明,Ltk非常令人沮丧,因为缺少文档,有时文档不正确。 (您会发现按钮样式选项不起作用)

我试图制作一个简单的滚动框架,其中包含许多按钮。 不幸的是,滚动条似乎从未“理解”。 当你把太多东西塞进一个容器时,它会自动提供一个滚动机制,这似乎是一个不需要动脑筋的问题。我们已经在TUIs和GUIs做了很长时间了

有人能修复下面给出的代码吗?如果你能想出如何用混合颜色给按钮上色,你就可以获得额外的积分

<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>
下面是问题的屏幕截图。滚动条拒绝看到其内部小部件需要滚动

非常感谢你对它的打击。。。 真诚地
像素违法

我相信其他人也会遇到同样的问题。 答案是使用以下(内部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))))