CommonLisp에서 GUI 프로그래밍~빈 윈도우~

소개



CommonLisp에서 GUI 응용 프로그램을 만들고 싶었고 여러가지 조사하고 있었는데, Ltk라는 편리한 것을 발견했습니다.
Ltk는 CommonLisp에서 쉽게 GUI 프로그래밍을 수행하는 것으로, OS를 불문하고 이용할 수 있다는 이점도 있습니다.
이것이라면 RaspberryPi의 Raspbian에서도 움직인다!
그렇다면 바로 만들어 보았습니다.

Tcl/tk 설치



Ltk는 내부적으로 Tcl/Tk를 호출하므로 Tcl/Tk가 필요합니다.
그래서, 우선은 이하의 커멘드로 Tcl/Tk를 인스톨 합니다.
sudo apt-get install tcl tk

패키징



ltk를 Quicklisp로로드하고 패키지 정의

packages.lisp
(ql:quickload "ltk")

(defpackage :cl-ltk
  (:use :common-lisp :ltk))

Quicklisp는 아래를 참조하여 설치하십시오.
· Quicklisp 베타

빈 윈도우 프로그램 작성



이번에는 아무것도하지 않는 빈 창을 만듭니다.

basewindow.lisp
;; Load packages
(load "packages.lisp" :external-format :utf-8)

;; Go into the defined package
(in-package :cl-ltk)

;; Main function
(defun main ()
  (with-ltk ()
        (wm-title *tk* "BaseWindow")
        (bind *tk* "<Alt-q>"
          (lambda (event)
            (setq *exit-mainloop* t)))))

;; Execution
(main)

실행



SBCL을 시작하고 다음 명령으로 실행
(load "basewindow.lisp" :external-format :utf-8)

이하 실행중인 모습
Raspbian에서 실행했습니다.



종료할 때는 "Alt-q"혹은 오른쪽 상단의 버튼 버튼으로 닫습니다.

마지막으로



CommonLisp에서도 GUI 응용 프로그램을 만들 수있었습니다.
생각보다 쉽고, C/C++ & Win32API라든지 만드는 것보다 훨씬 짧은 스텝수로 작성할 수 있는 것에 놀랐습니다.
글쎄, 지금은 C/C++ & Win32API로 GUI를 만드는 사람은 그렇게 없다고 생각하지만 (웃음)

이것으로 RaspberryPi에서도 GUI 어플리케이션을 작성할 수 있으므로, 전자 공작과 조합해도 여러가지 할 수 있을 것 같네요.

이번 소스 코드도 Github에서 공개하고 있습니다.
· Github

좋은 웹페이지 즐겨찾기