user-interface - 球拍/gui:睡觉时不冻结gui
问题描述
我正在写一个单元测试,我想:
- 打开一个框架
- 等待几秒钟
- 关闭框架
这是我尝试过的代码:
#lang racket/base
(require plot racket/class)
(define f
(plot3d-frame (surface3d (λ (x y) (* (cos x) (sin y))) -3.0 3.0 -3.0 3.0)))
(send f show #true)
(sleep 10)
(send f show #false)
运行它会打开一个空白帧,等待 10 秒,然后关闭该帧。情节永远不会出现。我想这是因为sleep
让整个线程(包括eventspace)进入睡眠状态。
有没有办法让我的代码在不让 GUI 进入睡眠状态的情况下进入睡眠状态?
解决方案
是的,使用sleep/yield
#lang racket/base
(require plot racket/class racket/gui/base)
(define f
(plot3d-frame (surface3d (λ (x y) (* (cos x) (sin y))) -3.0 3.0 -3.0 3.0)))
(send f show #true)
(sleep/yield 10)
(send f show #false)
;; "It works every time!"
推荐阅读
- spring-boot - 静态 ip spring boot heroku quotaguard
- azure - 如何在不使用帐户密钥的情况下访问存储帐户 blob 容器?
- python - 在 PyMongo 中进行收集查找并没有效果
- kubernetes - 从 pod 访问入口 IP
- node.js - 从 Microsoft graph api 列出用户所需的权限
- kubernetes - Kubernetes 集群中的请求缓冲
- asp.net - 403 禁止访问在 IIS 上托管的 asp.net 网站上使用 ssl 的图像被拒绝
- python - 将直方图箱添加在一起并绘制图形
- maven - Maven 插件中与 Eclipse Sisu/Guice 的自定义绑定
- python - tkinter 中的 scroll_text.insert 在程序完成后运行