CommonLisp에서 GUI 프로그래밍 ~ 라벨 및 항목 ~
5900 단어 RaspberryPicommon-lispLTk
소개
이번은 라벨과 엔트리(텍스트 박스와 같은 것)를 시험해 보고 싶습니다.
패키징
ltk를 Quicklisp로로드하고 패키지 정의
평소
packages.lisp(ql:quickload "ltk")
(defpackage :cl-ltk
(:use :common-lisp :ltk))
라벨 및 항목 프로그램
엔트리에 입력한 캐릭터 라인을 라벨에 표시하는 프로그램입니다.
entry.lisp(load "packages.lisp" :external-format :utf-8)
(in-package :cl-ltk)
(defun main ()
(with-ltk ()
(wm-title *tk* "Entry")
(bind *tk* "<Alt-q>" (lambda (event)
(setq *exit-mainloop* t)))
;; ここからラベルとエントリの処理
(let ((lbl1 (make-instance 'label :text "String input" :width 60)) ; 幅60ピクセルのラベル
(entry (make-instance 'entry)) ; エントリ
(btn (make-instance 'button :text "Button")) ; ボタン
(lbl2 (make-instance 'label :text "Label" :foreground 'red))) ; エントリに入力された文字列を表示するラベル(文字色は赤)
(setf (command btn) (lambda () (setf (text lbl2) (text entry)))) ; ボタン押下時の処理
(bind entry "<Return>" (lambda (event) ; Enterキー押下時の処理
(setf (text lbl2) (text entry))))
(focus entry) ; フォーカスをエントリにセット
(pack (list lbl1 entry btn lbl2) :fill :x)))) ; ウィジェットをまとめて配置
; fillオプションで幅いっぱいに広げる(方向はx, yで指定)
;; 実行!
(main)
실행
SBCL을 시작하고 다음 명령으로 실행
(load "entry.lisp" :external-format :utf-8)
이하 실행중인 모습
Raspbian에서 실행했습니다.
Hello, world!를 입력해 보았습니다.
제대로 라벨에 표시되어 있네요.
마지막으로
라벨과 항목의 두 가지를 시도했습니다.
항목은 텍스트 상자처럼 보이지만 한 줄의 문자열 만 처리 할 수있는 것 같습니다.
VB나 C#등에서는 멀티 라인의 설정을 하면 복수행도 취급할 수 있네요.
LTK에서는 텍스트라고 하는 위젯을 사용하는 것으로 복수행의 캐릭터 라인도 취급할 수 있는 것 같습니다.
Reference
이 문제에 관하여(CommonLisp에서 GUI 프로그래밍 ~ 라벨 및 항목 ~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/fireflower0/items/2b952080080eb6de2fff
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
ltk를 Quicklisp로로드하고 패키지 정의
평소
packages.lisp
(ql:quickload "ltk")
(defpackage :cl-ltk
(:use :common-lisp :ltk))
라벨 및 항목 프로그램
엔트리에 입력한 캐릭터 라인을 라벨에 표시하는 프로그램입니다.
entry.lisp(load "packages.lisp" :external-format :utf-8)
(in-package :cl-ltk)
(defun main ()
(with-ltk ()
(wm-title *tk* "Entry")
(bind *tk* "<Alt-q>" (lambda (event)
(setq *exit-mainloop* t)))
;; ここからラベルとエントリの処理
(let ((lbl1 (make-instance 'label :text "String input" :width 60)) ; 幅60ピクセルのラベル
(entry (make-instance 'entry)) ; エントリ
(btn (make-instance 'button :text "Button")) ; ボタン
(lbl2 (make-instance 'label :text "Label" :foreground 'red))) ; エントリに入力された文字列を表示するラベル(文字色は赤)
(setf (command btn) (lambda () (setf (text lbl2) (text entry)))) ; ボタン押下時の処理
(bind entry "<Return>" (lambda (event) ; Enterキー押下時の処理
(setf (text lbl2) (text entry))))
(focus entry) ; フォーカスをエントリにセット
(pack (list lbl1 entry btn lbl2) :fill :x)))) ; ウィジェットをまとめて配置
; fillオプションで幅いっぱいに広げる(方向はx, yで指定)
;; 実行!
(main)
실행
SBCL을 시작하고 다음 명령으로 실행
(load "entry.lisp" :external-format :utf-8)
이하 실행중인 모습
Raspbian에서 실행했습니다.
Hello, world!를 입력해 보았습니다.
제대로 라벨에 표시되어 있네요.
마지막으로
라벨과 항목의 두 가지를 시도했습니다.
항목은 텍스트 상자처럼 보이지만 한 줄의 문자열 만 처리 할 수있는 것 같습니다.
VB나 C#등에서는 멀티 라인의 설정을 하면 복수행도 취급할 수 있네요.
LTK에서는 텍스트라고 하는 위젯을 사용하는 것으로 복수행의 캐릭터 라인도 취급할 수 있는 것 같습니다.
Reference
이 문제에 관하여(CommonLisp에서 GUI 프로그래밍 ~ 라벨 및 항목 ~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/fireflower0/items/2b952080080eb6de2fff
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
(load "packages.lisp" :external-format :utf-8)
(in-package :cl-ltk)
(defun main ()
(with-ltk ()
(wm-title *tk* "Entry")
(bind *tk* "<Alt-q>" (lambda (event)
(setq *exit-mainloop* t)))
;; ここからラベルとエントリの処理
(let ((lbl1 (make-instance 'label :text "String input" :width 60)) ; 幅60ピクセルのラベル
(entry (make-instance 'entry)) ; エントリ
(btn (make-instance 'button :text "Button")) ; ボタン
(lbl2 (make-instance 'label :text "Label" :foreground 'red))) ; エントリに入力された文字列を表示するラベル(文字色は赤)
(setf (command btn) (lambda () (setf (text lbl2) (text entry)))) ; ボタン押下時の処理
(bind entry "<Return>" (lambda (event) ; Enterキー押下時の処理
(setf (text lbl2) (text entry))))
(focus entry) ; フォーカスをエントリにセット
(pack (list lbl1 entry btn lbl2) :fill :x)))) ; ウィジェットをまとめて配置
; fillオプションで幅いっぱいに広げる(方向はx, yで指定)
;; 実行!
(main)
SBCL을 시작하고 다음 명령으로 실행
(load "entry.lisp" :external-format :utf-8)
이하 실행중인 모습
Raspbian에서 실행했습니다.
Hello, world!를 입력해 보았습니다.
제대로 라벨에 표시되어 있네요.
마지막으로
라벨과 항목의 두 가지를 시도했습니다.
항목은 텍스트 상자처럼 보이지만 한 줄의 문자열 만 처리 할 수있는 것 같습니다.
VB나 C#등에서는 멀티 라인의 설정을 하면 복수행도 취급할 수 있네요.
LTK에서는 텍스트라고 하는 위젯을 사용하는 것으로 복수행의 캐릭터 라인도 취급할 수 있는 것 같습니다.
Reference
이 문제에 관하여(CommonLisp에서 GUI 프로그래밍 ~ 라벨 및 항목 ~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/fireflower0/items/2b952080080eb6de2fff
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(CommonLisp에서 GUI 프로그래밍 ~ 라벨 및 항목 ~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/fireflower0/items/2b952080080eb6de2fff텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)