LinuxでCommon Lisp + LTK なGUIプログラミング開発環境構築
CommonLispであれこれ遊んでいると、GUIなプログラミングとかやりたくなる。
ネタ的にはかなりニッチだと思われるが、備忘録として公開してみる。
この記事は、すでにCommonLispの開発環境が構築されていることが前提となっている。
CommonLispの開発環境構築がまだな人は、手前味噌ではあるが・・・ここで頑張ってみてくださいな。
MX Linux 19 にもClozure CL(Common Lisp)をインストール - Kamuycikap - SentenceDataBase
ちょっとだけ補足説明
LTKとは、CommonLispからTkと呼ばれるGUIライブラリを呼べるようにしたもの。
Tkとは、かなり古くからあるGUIライブラリで、手軽に利用できる特徴がある。
Tclと呼ばれるプログラミング言語とセットで公開されていて、Tcl/Tkなんて呼ばれている。
このTkの素晴らしいのは、Tclだけじゃなく、他のプログラミング言語からも呼びやすい設計になっていて、C言語やらPythonやらRubyやら・・・etcから利用できる。
当然、我らがCommonLispからも利用できる。
それがLTK。
Tcl/TKのインストール
なにはともあれ、そもそもPCにTkがインストールされてなければならない。
下記コマンドにてTcl/Tkをインストールする。
※下記はDebian系のディスとリビュージョンの場合なのであしからず
$ sudo apt-get install tcl $ sudo apt-get install tk
CommonLispのREPLでLTKを試してみる
LTKは、QuickLispでLoadするだけで利用できる。
具体的には、REPLに
> (ql:quickload :ltk) > (in-package :ltk) > (ltktest)
ソースコードを書く
早速コード書いてみる。
■ファイル名:ltksample.lisp
;;;; 新しいウィンドウを作成する (ql:quickload :ltk) (in-package :ltk) (with-ltk () (wm-title *tk* "GUIでハローワールド") (minsize *tk* 300 300) ; 300px X 300px (let* ((b (make-instance 'button :master nil :text "Press Me" :command (lambda () (format t "Hello World!~%"))))) (pack b)))
実行
REPLを起動し、load関数で上記のプログラムを読んであげるだけ。
> (load "ltksample.lisp")
サンプル
ここにいくつかサンプルを追加しました。
https://lisphub.jp/common-lisp/cookbook/index.cgi?Ltk