Slide 1

Slide 1 text

Gauche-Tkで簡単GUIプログラミング Kyotolisp TT 2012/05/12 なつたん

Slide 2

Slide 2 text

アジェンダ  自己紹介  Gauche-Tkの紹介  サンプルアプリケーション  これからやりたい事

Slide 3

Slide 3 text

アジェンダ  自己紹介  Gauche-Tkの紹介  サンプルアプリケーション  これからやりたい事

Slide 4

Slide 4 text

自己紹介  なつたん  エンジニア歴  組込プログラマ 3年  FPGAでVerilog-HDL, VHDLプログラマ 10年  Tcl/Tk プログラマ 1年 ← Now !  Twitter id natsutan  Blog  なつたん http://natu.txt-nifty.com/  ぱたヘネ http://d.hatena.ne.jp/natsutan/

Slide 5

Slide 5 text

最近作ったLispアプリ  LispWorksを使ったオ セロゲーム  GUIはLispWorksに付 属のツールキット (CAPI)  2人の娘とあそぶ  コマを片付けなくて良い。  コンピュータは制御する ものという概念を教える。 一番のメリット:新しいプリキュアにもすぐ対応できる

Slide 6

Slide 6 text

アジェンダ  自己紹介  Gauche-Tkの紹介  サンプルアプリケーション  これからやりたい事

Slide 7

Slide 7 text

Gauche-Tkの紹介  Gauche-Tk  Shiroさんが作ってくれたGauche用Tk binding  Gaucheから、Tkが呼び出せる。  Tcl/Tkを知っていれば、GaucheでGUIアプリが簡単に 書ける。  知らないと面倒です。

Slide 8

Slide 8 text

Tkの紹介  GUIのToolkit  Binding が多い  Tcl/Tk  Perl/Tk  Ruby/Tk  Tkinter (Python)  Ltk (Common Lisp)  Gauche-Tk (New!)

Slide 9

Slide 9 text

Gauche-Tkの始め方  Head版のGaucheを入手  Ubuntu、Cygwinはドキュメント通りでbuildできます。  http://practical-scheme.net/gauche/download-j.html  Windows版はコンパイル済みの物を配布してます。  http://d.hatena.ne.jp/natsutan/20120410  Gauche-Tkの入手  https://github.com/shirok/Gauche-tk  Tcl/Tkの入手  Windows の人は Active Tclが便利 最新版の Gauche 0.9.3ならそのまま動きます。

Slide 10

Slide 10 text

最初のサンプル

Slide 11

Slide 11 text

アジェンダ  自己紹介  Gauche-Tkの紹介  サンプルアプリケーション  これからやりたい事

Slide 12

Slide 12 text

簡単なスタック型の電卓  スタックは1段  入力はRPN  整数演算のみ ソースはgithubに https://github.com/natsutan/scm2exe/tree/master/target_sample/calc_scm

Slide 13

Slide 13 text

1. Tk初期化 Gauche-Tkのimport Tcl/Tkインタープリタへのパス /usr/local/bin/wish等 *tk-debug* を#tにすると、 wishとの通信が表示される。 Wishの起動

Slide 14

Slide 14 text

2. Windowの作成 アイコンの変更

Slide 15

Slide 15 text

3. ボタンの作成 ボタン幅の計算 ボタン 追加 Callback関数

Slide 16

Slide 16 text

4. Gauche-Tkのイベント処理 Gauche (gosh) Tcl/Tk (wish) ① Gauche-Tkの初期化 (tk-init ‘()) の呼び出し ①’Tcl/Tkのイベントハンドラ登録 Proc gauche__tk__callback ②Callback付きWidgetsの登録 (tk-button '.b :command (^[] (print"Yeah!"))) ②’Tcl/TkのWidgetの登録 button .b ¥ –command gauche__tk__callback 1 ③Tcl/Tkでイベント発生 gauche__tk__callback 呼び出し ③’対応するλ式の実行 (print"Yeah!")

Slide 17

Slide 17 text

5. ボタンのイベントハンドラー (省略) ・Enterキーの処理 電卓に表示されている値をスタックに設定 ・+ - x / の処理 押されたボタンに対応する関数を引数 にして、calcの呼び出し ・計算部分 op0 に電卓に表示されている値 op1 にスタックの値 (operator op1 op0) の評価 ・計算結果の処理 計算結果を電卓に表示 計算結果をスタックに設定

Slide 18

Slide 18 text

アジェンダ  自己紹介  Gauche-Tkの紹介  サンプルアプリケーション  これからやりたい事

Slide 19

Slide 19 text

これからやりたいこと  他Scheme処理系への移植  Guile2をターゲット  チュートリアル  Tkinter、Ltkも一緒に  他のTcl/Tkモジュールとの連携など(COMで Excel操作等)  単一exe化  作ったGUIプログラムを単一のexeにしたい。  非プログラマの人にも使ってもらいたい。  人は辞めてもexeは残る

Slide 20

Slide 20 text

単一exe化への道  Tcl/Tkでは実現できている。  Tclkit  Foo.tclをfoo.exeにしてくれる。  技術的なポイント  Tcl上に構成された仮想ファイルシステム(ここに必要な ファイルをすべて入れる)  スタートアップルーチン  他の言語も同じやり方で統一したい  Python、CLISP、Guile等

Slide 21

Slide 21 text

おしまい  Gauche-Tkを使うとGUIアプリが簡単に作れる。  GaucheはHEAD版を使ってください  Windows版はインストーラ作りました  「Gauche-tk ぱたへね」で検索  最新版 Gauche 0.9.3 を使ってください。  今日のサンプルはgithubに  https://github.com/natsutan/scm2exe/tree/master/target_sample/calc _scm