lisp如何获得对话框的返回值
时间: 2023-10-25 21:09:49 浏览: 190
在Lisp中,可以使用函数 `read-from-minibuffer` 来获取对话框的返回值。这个函数会显示一个小型文本框,让用户输入一些文本,并返回用户输入的字符串。例如,下面的代码将在MiniBuffer中显示一个提示信息,并等待用户输入:
```
(let ((input (read-from-minibuffer "请输入一些文本:")))
(message "您输入的文本是:%s" input))
```
当用户在MiniBuffer中输入了一些文本之后,这段代码会将用户输入的文本插入到提示信息中并在消息区域显示出来。
相关问题
lisp中如何获得按下ok按钮后的返回值
在 Lisp 中,您可以使用 `start_dialog` 函数启动一个对话框,并指定一个回调函数来处理用户交互。当用户点击对话框中的“OK”或“Cancel”按钮时,Lisp 会调用回调函数,并将用户的选择作为整数值返回。
具体来说,当用户点击“OK”按钮时,回调函数将返回整数值 `1`,而当用户点击“Cancel”按钮时,回调函数将返回 `nil`。您可以通过检查回调函数的返回值来确定用户的选择,并执行相应的操作。例如,以下代码显示一个带有“OK”和“Cancel”按钮的对话框,并在用户点击“OK”按钮时将 `d1` 变量的值设置为 `1`:
```
(setq d1 nil)
(defun my_dialog_callback (ctl)
(cond ((= ctl 1) ; 用户点击 OK 按钮
(setq d1 1)
(done_dialog 0))
((= ctl 2) ; 用户点击 Cancel 按钮
(done_dialog 0))))
(start_dialog
"My Dialog" ; 对话框标题
'(("OK" 1) ("Cancel" 2)) ; 控件列表
60 40 ; 对话框大小
'my_dialog_callback ; 回调函数
)
```
在上面的例子中,当用户点击“OK”按钮时,回调函数将设置变量 `d1` 的值为 `1`,并调用 `done_dialog` 函数关闭对话框。当用户点击“Cancel”按钮时,回调函数只调用 `done_dialog` 函数关闭对话框,而不对变量 `d1` 进行任何更改。
如果我使用(done_dialog 1)为对话框赋值为1,我如何能获得对话框的这个新值
在 Lisp 中,可以使用函数 `(dialog-value dialog-object)` 来获取对话框的返回值。当您调用 `(done-dialog 1)` 函数时,它会关闭对话框并将值 1 返回给 Lisp。您可以通过将对话框对象作为参数传递给 `(dialog-value)` 函数来获取这个返回值。
下面是一个示例,展示如何获取对话框的返回值:
```
(let ((d (start-dialog "请选择一个选项:"))
(result nil))
(if (= (dialog-value d) 1)
(setq result "您选择了第一个选项。")
(setq result "您没有选择第一个选项。"))
(done-dialog 1)
(message result))
```
在这个示例中,我们首先使用 `(start-dialog)` 函数创建一个对话框,并将其存储在变量 `d` 中。然后,我们使用 `(dialog-value d)` 函数获取对话框的返回值,并将其与值 1 进行比较。如果返回的值是 1,则将 `result` 变量设置为字符串 "您选择了第一个选项。";否则将其设置为字符串 "您没有选择第一个选项。"。最后,我们使用 `(done-dialog 1)` 函数关闭对话框,并在消息区域中显示 `result` 变量的值。
阅读全文