2016-12-26 9 views
1

最近、メニューを使用するプログラムを作成するタスクが与えられました。しかし、私はどのようにウィンドウを作成し、特定のキーを使用して相互作用することができるテキストを表示させるかわからない、 '入力'キーを言う。誰もこれを行う方法のヒントはありますか?スキームでインタラクティブメニューを作成する方法

答えて

1

スキームレポートにはGUIがサポートされていないため、唯一の移植可能なものはCLIインターフェイスです。これは、これらの部分だけを持つ非常に単純なプログラムです。

#!r6rs 
(import (rnrs)) 

(define *stdin* (current-input-port)) 
(define (readline) 
    (get-line *stdin*)) 

;;; displays a textual menu 
(define (menu) 
    (display "Menu\n1. read input\n2. print data\n3. empty input\n")) 

;; read until we got the value between 1 and 3 from user 
(define (read-command) 
    (display "Enter choice [1-3] >") 
    (let* ((in (readline)) 
     (n (string->number in))) 
    (cond ((<= 1 n 3) n) 
      (else 
      (display "Invalid choice \"") 
      (display in) 
      (display "\"\n") 
      (read-command))))) 


(define (driver data) 
    (menu) 
    (let ((choice (read-command))) 
    (cond ((= choice 1) (display "Enter text >") 
         (driver (cons (readline) data))) 
      ((= choice 2) (display "Data:\n") 
         (display data) 
         (newline) 
         (driver data)) 
      (else (display "Emptied\n") 
       (driver '()))))) 

(driver '()) 

もちろん、個々の実装にはGUIがサポートされています。例えば。ラケットには、デスクトップアプリケーションを作成する方法があります。ここでは、メニューをクリックするボタンにすることができます。

関連する問題