- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 ltk 为 Common-Lisp 中的 Dijkstra 算法开发一个 GUI 应用程序。但是,要在 Canvas 上放置一个节点,我需要它的标签,为此,执行必须等到用户输入一个字符串(并按回车键)以使用该值启动节点实例。没有监听过程,返回发生在第二个顶层屏幕创建之后。
下面是当用户在菜单上选择“添加节点”选项时执行的代码:
(defun node-add-mode (canvas)
(configure canvas :cursor "cross")
(bind canvas "<ButtonPress-1>"
(lambda (evt)
(let* ((pos-x (event-x evt))
(pos-y (event-y evt))
(data (read-node-data))
(node (make-instance 'node :pos (list pos-x pos-y) :data data)))
(populate-graph :node node)
(create-graph canvas *graph*)))))
populate-graph
函数只是将创建的节点添加到实际图形中,create-graph
函数将其绘制在 Canvas 上。这是 read-node-data
到目前为止我实现的功能:
(defun read-node-data ()
(let* ((m (make-instance 'toplevel))
(f (make-instance 'frame :master m))
(l (make-instance 'label
:master f
:text "Insert The Object Value"))
(v (make-instance 'entry
:master f
:width *entry-width*)))
(wm-title m "Entry")
(pack f)
(pack l)
(pack v)
(bind v "<Return>"
(lambda (evt)
(let ((text (text v)))
(destroy m)
text)))))
我只想在 "<Return>"
之后返回此代码块的条目文本事件发生,以便能够将其传递给节点实例化。
最佳答案
Tcl 有一个 vwait
代码需要阻塞某些变量值的情况的机制。据我所知,这在 LTK 中是不可用的。您可以使用另一个系统,例如 cl-async
,但也许最简单的选择是将您的代码从里到外翻转,使其成为基于事件的:仅在名称已知时构建节点。
(defun read-node-data (continuation)
...
(bind v
"<Return>"
(lambda (evt &aux (text (text evt)))
(destroy m)
(funcall continuation text))))
然后:
(defun node-add-mode (canvas)
(configure canvas :cursor "cross")
(bind canvas "<ButtonPress-1>"
(lambda (evt)
(let ((pos-x (event-x evt))
(pos-y (event-y evt)))
(read-node-data
(lambda (data)
(let ((node (make-instance 'node
:pos (list pos-x pos-y)
:data data)))
(populate-graph :node node)
(create-graph canvas *graph*))))))))
关于common-lisp - 如何等到事件结束才能使用 ltk 从函数返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56621391/
我的第一个 LTK 应用程序。尝试使用输入字段中的参数执行函数。 (defpackage :test (:use :cl :ltk)) (in-package :test) (defun
函数的种类是: (defun display-all () "Display all items in the database." (dolist (item *database*)
有没有办法消除在 LTK 的 Entry 小部件中键入的字符的回显? 对于 CLI 界面,我使用 c 字符串函数(外星例程) (sb-alien:define-alien-routine getpas
我已经编写了读取 Windows 位图的代码,现在想用 ltk 显示它。我怎样才能构造一个合适的对象? ltk中有这样的功能吗?如果不是,我如何才能直接连接到 tk? 最佳答案 我已经有一段时间没有使
我正在使用 ltk 为 Common-Lisp 中的 Dijkstra 算法开发一个 GUI 应用程序。但是,要在 Canvas 上放置一个节点,我需要它的标签,为此,执行必须等到用户输入一个字符串(
我正在尝试使用 ltk 在普通的 lisp 中制作一个 GUI 应用程序,但有一件事我就是想不通。我知道我可以使用 configure 设置 ltk 小部件的选项,但我无法找到读取值的方法。 例如,我
我使用 asdf-install 将 ltk 安装到 Steel Bank Common Lisp,但我什至无法开始使用它 V_V。下面的代码是文档中最简单的示例,几乎是逐字复制的。 (asdf:op
我正在用 Common Lisp 制作一个简单的小程序,我想使用鼠标移动来控制它。我使用 LTK 作为窗口。我找不到任何可以检索鼠标位置的函数。例如,Emacs Lisp 有 (mouse-pixel
我正在尝试为即将到来的项目在 Clojure 和 CL 之间做出决定。为了弄湿我的脚,我在玩一些简单的 GUI 东西。 这是我在 CL/Ltk 中的内容: (ql:quickload "ltk") (
我正在 AMD64 计算机上使用适用于 Linux 的 SBCL。函数 CONTROL-TEST 创建一个带有绘图 Canvas 和两个滑动比例尺的窗口。 slider :VARIABLES for
我正在 Mac 上学习 Common Lisp (Clozure CL) 并安装了 quicklisp,在这里得到了一位慷慨的贡献者的帮助。 'ltk' 库在运行 (ltk::ltk-eyes) 或
对于 BLE 专家,我有一个概念性问题,关于在两个 BLE 设备之间发生绑定(bind)时生成和交换的 key 。我可能错了,或者我的问题可能很幼稚,所以请多多包涵。 考虑以下示例,我们称其为 Cas
我正在修补 ltk因为它提供了运行远程 GUI 的选项。但是,在尝试使用远程 GUI 时,我遇到了在本地运行 ltk 时没有遇到的问题: (in-package :ltk-user) (defun a
我正在使用 LLRP 库开发应用程序。网关(计算机)从阅读器(使用本地主机的模拟阅读器)收到我的消息后,我想使用 将其转换为 LLRPMessage Org.LLRP.LTK.LLRPV1.LLRPX
我是一名优秀的程序员,十分优秀!