【问题标题】:racket/gui: sleep without freezing gui球拍/gui:睡觉时不冻结gui
【发布时间】:2019-01-28 05:20:45
【问题描述】:

我正在编写一个单元测试,我想:

  1. 打开一个框架
  2. 等待几秒钟
  3. 关闭框架

这是我尝试过的代码:

#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 休眠?

【问题讨论】:

    标签: user-interface racket sleep


    【解决方案1】:

    是的,使用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!"
    

    【讨论】:

      猜你喜欢
      • 2011-08-06
      • 2013-01-16
      • 2020-08-06
      • 2015-04-08
      • 2015-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-26
      相关资源
      最近更新 更多