Ltk:ラジオボタンを表示する - lisp-cookbook-ja/common-lisp GitHub Wiki

  • ラジオボタン
;;; LTKでラジオボタンを表示する

(ql:quickload :ltk)


;; パッケージの作成
(defpackage :ex4-06
  (:use :common-lisp
        :ltk)
  (:export :main))

(in-package :ex4-06)

(defun main ()
  (with-ltk ()
    (let* (
           (fradio (make-instance 'frame))
           (r1 (make-instance 'radio-button :master fradio :text "fried" :value 1 :variable "group1"
                              :command (lambda (value)
                                         (format t "radio-button1_click!:~A~%" value))))
           (r2 (make-instance 'radio-button :master fradio :text "stirred" :value 2 :variable "group1"
                              :command (lambda (value)
                                         (format t "radio-button2_click!:~A~%" value))))

           (r3 (make-instance 'radio-button :master fradio :text "cooked" :value 3 :variable "group1"
                              :command (lambda (value)
                                         (format t "radio-button3_click!:~A~%" value))))
           (btn (make-instance
                 'button
                 :text "radio watch"
                 :command (lambda ()
                            ;; r1〜r3のすべてが同じ値を表示する
                            ;; つまり、同じグループで値が共通になるので、グループのどれかのvalueを調べれば何が選択されているかわかる
                             (print (value r1))
                             (print (value r2))
                             (print (value r3)))))


      )
      (pack fradio :side :top :fill :x)
      (pack (list r1 r2 r3) :side :left)
      (pack btn)

      ;; 初期状態を決める(r1を選択状態にする)
      ;; :valueで決めた値をセットしなければ、選択状態にならない
      (setf (value r1) 1)

      )))

(main)