Post by Jason Miller(let ((tb (make-instance 'text :width 78 :height 20))
(tbsb (make-instance 'scrollbar :orientation :vertical)))
(pack tb :side :left)
(pack tbsb :side :left :fill :y)
;Now you need to tell the two widgets about each other
(configure tbsb "command" (format nil "~a yview" (widget-path tb)))
(configure tb :yscrollcommand (format nil "~a set" (widget-path
tbsb))))
Thanks for the hint, Jason! But I am still struggling.
Your example works fine. But it covers only a single text widget. I am trying
to scroll a collection of widgets, like this:
(defun scrolltest ()
(with-ltk ()
(let* ((root (make-instance 'frame))
(button-list (make-instance 'listbox :master root))
(scrollbar (make-instance 'scrollbar :master root
:orientation :vertical))
(quit-button (make-instance 'button :master root
:text "Quit"
:command (lambda ()
(setf *exit-mainloop* t)))))
(pack root :side :top)
(pack quit-button :side :bottom :pady 10)
(pack button-list :side :left)
(pack scrollbar :side :left :expand t :fill :y)
(configure scrollbar "command"
(format nil "~a yview" (widget-path button-list)))
(configure button-list :yscrollcommand
(format nil "~a set" (widget-path scrollbar)))
(dolist (button-number '(1 2 3 4 5 6 7 8 9 0))
(let ((b (make-instance 'button
:master button-list
:text button-number
:command (lambda ()
(format t "~a~%" button-number)))))
(pack b :side :top :anchor :w))))))
The widgets simply don't seem to be connected :-(
I have also tried with a frame instead of a listbox, but frames don't seem to
support the yscrollcommand.
--
Josef Wolf
***@raven.inka.de