- 書きかけ
雑記
- with-ltkはwishの起動やmainloopの呼び出しとか全部やってくれるマクロ.基本的にltkのプログラミングではこれで全体を囲む.マニュアルでやりたいなら,(start-wish), (mainloop)を実行する.
- ウィジットのmasterオプションは親ウィジットの指定.nilはトップが親の場合.
イベントハンドリング
- 単純なイベント(ボタンのプレスとか)はウィジット生成時に:commandで定義できるけど,一般的にはbindを使う.(bind widget event function)形式で指定する.functionは1変数関数で,その変数にはイベントが格納される.マニュアルの下記例が分かりやすい.
(defun scribble ()
(with-ltk ()
(let ((canvas (make-instance 'canvas))
(down nil))
(pack canvas)
(bind canvas "<ButtonPress-1>"
(lambda (evt)
(setf down t)
(create-oval canvas
(- (event-x evt) 10) (- (event-y evt) 10)
(+ (event-x evt) 10) (+ (event-y evt) 10))))
(bind canvas "<ButtonRelease-1>" (lambda (evt)
(declare (ignore evt))
(setf down nil)))
(bind canvas "<Motion>"
(lambda (evt)
(when down
(create-oval canvas
(- (event-x evt) 10) (- (event-y evt) 10)
(+ (event-x evt) 10) (+ (event-y evt) 10))))))))