CommonLisp:ClozureCL
OS:LinuxMint18 MATE
軽量GUIライブラリであるLTKを試しています。
「ボタンをクリックしたら、check-buttonをONにする」
という処理を実現したいのですが、マニュアルの意味がわからないのと、ltk.lispに処理が書かれていないので、どうすればよいか分からず悩んでおります。
Tclであれば、「.cbtn1 select」という具合で、selectでON/OFFできるのですが、LTKではどうすれば良いのでしょうか。
マニュアルには
The following generic functions are defined on widgets: (value widget) Reads/sets the value of the widget. Applicable for: check-button, radio-button, menucheckbutton, menuradiobutton, scale. (text widget) Reads/sets the text of the widget. Depending on the wid- get, this can be text displayed on the widget (button) or contained as data (entry). Applicable for button, check-button, entry, label, labelframe, spinbox, text.
とありますので、(value XXXXX)として、XXXXXをcheck-buttonのインスタンス名にすれば良いのではないかと想像したのですが、書き方がわからず・・・。
※下記ソースのcbtn1の:commandは動作しています。
識者の方、ぜひ教えてください。
lisp
1;;; LTKでボタンを表示する 2 3(ql:quickload :ltk) 4 5 6;; パッケージの作成 7(defpackage :ex4-05 8 (:use :common-lisp 9 :common-lisp-user 10 :ltk) 11 (:export :main)) 12 13(in-package :ex4-05) 14 15(defun main () 16 (with-ltk () 17 (let* ( 18 (cbtn1 (make-instance 19 'check-button 20 :text "check button1" 21 :variable :cbtn1_val 22 :onvalue :on 23 :offvalue :off 24 :command (lambda (value) 25 (format t "check-button1:~A~%" value) 26 ))) 27 28 (cbtn2 (make-instance 29 'check-button 30 :text "check button2")) 31 32 (cbtn3 (make-instance 33 'check-button 34 :text "Close")) 35 36 (btn (make-instance 37 'button 38 :text "check on!" 39 :command (lambda () 40 (setf (value cbtn1) "ON")))) ;; <-- ここでチェックボタンのON/OFFを操作したい 41 ) 42 (pack (list cbtn1 cbtn2 cbtn3) :side :top :fill :both :expand :yes) ; fill,both,expand,yesを指定すると、Wiindowのハシをドラッグして伸ばしても、ボタンが上下左右に大きくなる。 43 (pack btn :side :top :fill :both :expand :yes) 44 ))) 45 46(main) 47 48 49 50
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。