ぱたへね

はてなダイアリーはrustの色分けができないのでこっちに来た

Gauche-Tkバージョンアップ

Windows環境の日本語サポートとttk拡張のサポートです。
最新版はこちらから入手してください。
https://github.com/shirok/Gauche-tk

以前のバージョンでは、Windows環境で日本語の文字化けがありましたが、このバージョンから特に何もしなくても日本語を使用できます。ttkに関しては、ttk-button, ttk-combobox のような形でtkのwidgetsと同じように呼び出せます。

サンプルプログラム

;; simple combobox example
(use tk)

(wish-path "wish")
(with-module tk (set! *tk-debug* #t))

(tk-init '())

(define *signlist* '("白羊宮" "金牛宮" "双児宮" "巨蟹宮" "獅子宮" "処女宮" "天秤宮" "天蝎宮" "人馬宮" "磨羯宮" "宝瓶宮" "双魚宮"))
(define *saintlist* '(ムウ アルデバラン サガ デスマスク アイオリア シャカ 童虎 ミロ アイオロス シュラ カミユ アフロディーテ))
(define *current* 0)
; 初期値
(tk-set! "::saint" (car *saintlist*))
(tk-set! "::sign" (car *signlist*))

; ボタンを押すと::saintを読み出して表示する
(define display-saint
  (lambda ()
    (tk-messageBox :type 'ok
                   :title "Saint" 
                   :message (format "~a:~a" (tk-ref "::sign") (tk-ref "::saint")))))
                                                

(tk-label '.l :textvariable "::sign")
(ttk-combobox '.cb :textvariable "::saint" :values *saintlist*)
(ttk-button '.b  :text "Push" :command display-saint)

(tk-pack '.l '.cb '.b)

; イベント処理
; commboboxが選択されると、labelの表示を変更
(tk-bind '.cb '<<ComboboxSelected>> (tklambda ()
                                              (let ((index (x->integer (tk-call '.cb 'current))))
                                                (tk-set! "::sign" (ref *signlist* index)))))

(tk-mainloop)

実行時のスクリーンショット