canvas
Jason Miller
jason at milr.com
Mon Nov 9 06:28:26 UTC 2020
Hi Igor,
I'd never used canvas before, but I took the tutoial here:
https://tkdocs.com/tutorial/canvas.html
And ported it to lisp:
(defun sketch ()
(ltk:with-ltk ()
(let ((c (make-instance 'ltk:canvas))
lastx
lasty)
(flet ((add-line (x y)
(make-instance 'ltk:canvas-line
:canvas c
:coords (list lastx lasty x y))
(setf lastx x
lasty y)))
(ltk:grid c 0 0 :sticky "nwes")
(ltk:grid-columnconfigure ltk:*tk* 0 :weight 1)
(ltk:grid-rowconfigure ltk:*tk* 0 :weight 1)
(ltk:bind c "<1>" (lambda (e)
(setf lastx (ltk:event-x e)
lasty (ltk:event-y e))))
(ltk:bind c "<B1-Motion>" (lambda (e)
(add-line
(ltk:event-x e)
(ltk:event-y e))))))))
Hope that helps,
Jason
On Sun, 8 Nov 2020 22:13:26 -0800, Jason Miller <jason at milr.com> wrote:
> I think you want something like this?
>
> (ltk:with-ltk ()
> (let ((c (make-instance 'ltk:canvas)))
> (ltk:pack c)
> (make-instance 'ltk:canvas-line :coords '(20 20 40 40) :canvas c)))
>
>
> On Sat, 7 Nov 2020 17:18:23 -0500, igor denisov <saufesma at gmail.com> wrote:
> > Hi there,
> >
> > I cannot figure out how to use canvas. I JUST DO NOT KNOW WHERE TO
> > LOOK FOR THE ANSWER
> >
> > LTK> (let* (;;(f (make-instance 'frame))
> > (c (make-instance 'canvas :width WIDTH :height HEIGHT))
> > (line (create-line c 20 20 40 40))
> > ;;(pack f)
> > (pack c)
> > ;;(itemconfigure c line arrow first) ;; HOW TO MAKE IT WORK
> > !!!!!!!!!!!!!!!
> > ))
> > ; in:
> > ; LET* ((C (MAKE-INSTANCE 'CANVAS :WIDTH WIDTH :HEIGHT HEIGHT))
> > ; (LINE (CREATE-LINE C 20 20 40 40)) (PACK C))
> > ; (LTK:CREATE-LINE LTK::C 20 20 40 40)
> > ;
> > ; caught STYLE-WARNING:
> > ; The function was called with five arguments, but wants exactly two.
> >
> > ; (LET* ((LTK::C
> > ; (MAKE-INSTANCE 'LTK:CANVAS :WIDTH LTK::WIDTH :HEIGHT LTK::HEIGHT))
> > ; (LTK::LINE (LTK:CREATE-LINE LTK::C 20 20 40 40))
> > ; (LTK:PACK LTK::C))
> > ; )
> > ;
> > ; caught STYLE-WARNING:
> > ; The variable LINE is defined but never used.
> > ;
> > ; caught STYLE-WARNING:
> > ; The variable PACK is defined but never used.
> > ;
> > ; compilation unit finished
> > ; caught 3 STYLE-WARNING conditions
> > ; Evaluation aborted on #<SB-INT:SIMPLE-PROGRAM-ERROR "invalid number
> > of arguments: ~S" {1003704743}>.
> >
> >
> > Here is another one.
> >
> > If you run the following you get a strange error
> >
> > (defun 0-ltk-test ()
> > (with-ltk (:serve-event t)
> > (let ((sc (make-instance 'scrolled-canvas)))
> > (create-line sc '(10 10 20 20))
> > (pack sc :expand 1 :fill :both)
> > )))
> >
> > The value
> > NIL
> > is not of type
> > STREAM
> > when binding STREAM
> > [Condition of type TYPE-ERROR]
> >
> > BEST
> >
> > On 11/7/20, igor denisov <saufesma at gmail.com> wrote:
> > > Hi there,
> > >
> > > Here is another one.
> > >
> > > If you run the following you get a strange error
> > >
> > > (defun 0-ltk-test ()
> > > (with-ltk (:serve-event t)
> > > (let ((sc (make-instance 'scrolled-canvas)))
> > > (create-line sc '(10 10 20 20))
> > > (pack sc :expand 1 :fill :both)
> > > )))
> > >
> > > The value
> > > NIL
> > > is not of type
> > > STREAM
> > > when binding STREAM
> > > [Condition of type TYPE-ERROR]
> > >
> > > On 11/7/20, igor denisov <saufesma at gmail.com> wrote:
> > >> I cannot figure out how to use canvas. I JUST DO NOT KNOW WHERE TO LOOK
> > >> FOR
> > >>
> > >> LTK> (let* (;;(f (make-instance 'frame))
> > >> (c (make-instance 'canvas :width WIDTH :height HEIGHT))
> > >> (line (create-line c 20 20 40 40))
> > >> ;;(pack f)
> > >> (pack c)
> > >> ;;(itemconfigure c line arrow first) ;; HOW TO MAKE IT WORK
> > >> !!!!!!!!!!!!!!!
> > >> ))
> > >> ; in:
> > >> ; LET* ((C (MAKE-INSTANCE 'CANVAS :WIDTH WIDTH :HEIGHT HEIGHT))
> > >> ; (LINE (CREATE-LINE C 20 20 40 40)) (PACK C))
> > >> ; (LTK:CREATE-LINE LTK::C 20 20 40 40)
> > >> ;
> > >> ; caught STYLE-WARNING:
> > >> ; The function was called with five arguments, but wants exactly two.
> > >>
> > >> ; (LET* ((LTK::C
> > >> ; (MAKE-INSTANCE 'LTK:CANVAS :WIDTH LTK::WIDTH :HEIGHT
> > >> LTK::HEIGHT))
> > >> ; (LTK::LINE (LTK:CREATE-LINE LTK::C 20 20 40 40))
> > >> ; (LTK:PACK LTK::C))
> > >> ; )
> > >> ;
> > >> ; caught STYLE-WARNING:
> > >> ; The variable LINE is defined but never used.
> > >> ;
> > >> ; caught STYLE-WARNING:
> > >> ; The variable PACK is defined but never used.
> > >> ;
> > >> ; compilation unit finished
> > >> ; caught 3 STYLE-WARNING conditions
> > >> ; Evaluation aborted on #<SB-INT:SIMPLE-PROGRAM-ERROR "invalid number
> > >> of arguments: ~S" {1003704743}>.
> > >>
> > >> BEST
> > >>
> > >
> >
>
More information about the ltk-user
mailing list