如何在方案中创建交互式菜单

时间:2016-12-26 15:40:50

标签: user-interface menu scheme user-interaction

我最近被赋予了创建程序的任务,该程序需要使用菜单。但是,我不知道如何创建一个窗口并使其显示可以使用某个键进行交互的文本,让我们说“输入”。键。有没有人对如何做到这一点有任何暗示?

1 个答案:

答案 0 :(得分: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支持。例如。 Racket有一种方法可以创建桌面应用程序,其中菜单可以是您单击的按钮。