CommonLisp로 GUI 프로그래밍~버튼 그 1~
4147 단어 RaspberryPicommon-lispLTk
소개
이번에는 전회 작성한 빈 윈도우 위에 버튼을 1개 배치해 보겠습니다.
패키징
ltk를 Quicklisp로로드하고 패키지 정의
이것은 이전과 동일합니다.
packages.lisp(ql:quickload "ltk")
(defpackage :cl-ltk
(:use :common-lisp :ltk))
버튼 1개를 배치하는 프로그램
버튼을 누르면 「Button pressed!」라고 콘솔에 표시해, 윈도우를 닫는 프로그램입니다.
button.lisp;; パッケージをロードする
(load "packages.lisp" :external-format :utf-8)
;; cl-ltkパッケージの中に入る
(in-package :cl-ltk)
;; Main function
(defun main ()
(with-ltk ()
(wm-title *tk* "Button Test")
(bind *tk* "<Alt-q>" (lambda (event)
(setq *exit-mainloop* t)))
;; ここからボタン処理
(let ((btn (make-instance 'button
:master nil ; トップレベルウィンドウ
:text "Button" ; ボタンに表示する文字列
;; 以下ボタンが押下された時の処理
:command (lambda ()
(format t "Button pressed!~%") ; 「Button pressed!」とコンソールに表示し、
(setq *exit-mainloop* t))))) ; ウィンドウを閉じる
;; ボタンを配置
(pack btn))))
;; 実行!
(main)
실행
SBCL을 시작하고 다음 명령으로 실행
(load "button.lisp" :external-format :utf-8)
이하 실행중인 모습
Raspbian에서 실행했습니다.
버튼을 누르면 창이 닫힙니다.
또한 콘솔에 "Button pressed!"가 표시됩니다.
마지막으로
빈 창에 버튼 1개를 배치해 보았습니다.
람다 식이라는 익명 함수를 사용하여 실제 처리를 기술해 나가는 곳이 다른 GUI 프로그래밍과 다르다고 느꼈습니다.
그렇다고 해도 자신이 C/C++ & Win32API라든지 VB, C#의 GUI 정도밖에 모르는 탓이기도 하다고 생각합니다만・・・.
Reference
이 문제에 관하여(CommonLisp로 GUI 프로그래밍~버튼 그 1~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/fireflower0/items/f39f0321651a3c93eefa
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
ltk를 Quicklisp로로드하고 패키지 정의
이것은 이전과 동일합니다.
packages.lisp
(ql:quickload "ltk")
(defpackage :cl-ltk
(:use :common-lisp :ltk))
버튼 1개를 배치하는 프로그램
버튼을 누르면 「Button pressed!」라고 콘솔에 표시해, 윈도우를 닫는 프로그램입니다.
button.lisp;; パッケージをロードする
(load "packages.lisp" :external-format :utf-8)
;; cl-ltkパッケージの中に入る
(in-package :cl-ltk)
;; Main function
(defun main ()
(with-ltk ()
(wm-title *tk* "Button Test")
(bind *tk* "<Alt-q>" (lambda (event)
(setq *exit-mainloop* t)))
;; ここからボタン処理
(let ((btn (make-instance 'button
:master nil ; トップレベルウィンドウ
:text "Button" ; ボタンに表示する文字列
;; 以下ボタンが押下された時の処理
:command (lambda ()
(format t "Button pressed!~%") ; 「Button pressed!」とコンソールに表示し、
(setq *exit-mainloop* t))))) ; ウィンドウを閉じる
;; ボタンを配置
(pack btn))))
;; 実行!
(main)
실행
SBCL을 시작하고 다음 명령으로 실행
(load "button.lisp" :external-format :utf-8)
이하 실행중인 모습
Raspbian에서 실행했습니다.
버튼을 누르면 창이 닫힙니다.
또한 콘솔에 "Button pressed!"가 표시됩니다.
마지막으로
빈 창에 버튼 1개를 배치해 보았습니다.
람다 식이라는 익명 함수를 사용하여 실제 처리를 기술해 나가는 곳이 다른 GUI 프로그래밍과 다르다고 느꼈습니다.
그렇다고 해도 자신이 C/C++ & Win32API라든지 VB, C#의 GUI 정도밖에 모르는 탓이기도 하다고 생각합니다만・・・.
Reference
이 문제에 관하여(CommonLisp로 GUI 프로그래밍~버튼 그 1~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/fireflower0/items/f39f0321651a3c93eefa
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
;; パッケージをロードする
(load "packages.lisp" :external-format :utf-8)
;; cl-ltkパッケージの中に入る
(in-package :cl-ltk)
;; Main function
(defun main ()
(with-ltk ()
(wm-title *tk* "Button Test")
(bind *tk* "<Alt-q>" (lambda (event)
(setq *exit-mainloop* t)))
;; ここからボタン処理
(let ((btn (make-instance 'button
:master nil ; トップレベルウィンドウ
:text "Button" ; ボタンに表示する文字列
;; 以下ボタンが押下された時の処理
:command (lambda ()
(format t "Button pressed!~%") ; 「Button pressed!」とコンソールに表示し、
(setq *exit-mainloop* t))))) ; ウィンドウを閉じる
;; ボタンを配置
(pack btn))))
;; 実行!
(main)
SBCL을 시작하고 다음 명령으로 실행
(load "button.lisp" :external-format :utf-8)
이하 실행중인 모습
Raspbian에서 실행했습니다.
버튼을 누르면 창이 닫힙니다.
또한 콘솔에 "Button pressed!"가 표시됩니다.
마지막으로
빈 창에 버튼 1개를 배치해 보았습니다.
람다 식이라는 익명 함수를 사용하여 실제 처리를 기술해 나가는 곳이 다른 GUI 프로그래밍과 다르다고 느꼈습니다.
그렇다고 해도 자신이 C/C++ & Win32API라든지 VB, C#의 GUI 정도밖에 모르는 탓이기도 하다고 생각합니다만・・・.
Reference
이 문제에 관하여(CommonLisp로 GUI 프로그래밍~버튼 그 1~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/fireflower0/items/f39f0321651a3c93eefa
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(CommonLisp로 GUI 프로그래밍~버튼 그 1~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/fireflower0/items/f39f0321651a3c93eefa텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)