【问题标题】:Override Events in Haskell在 Haskell 中覆盖事件
【发布时间】:2011-12-30 13:37:55
【问题描述】:

我正在用 GUI 编写一个 haskell 程序。当我写下面这段代码时

    onClicked btn $ do
           print 1

    onClicked btn $ do
           print 2

按 btn 导致同时打印 1 和 2 如何覆盖函数定义,以便最后一个定义替换第一个定义并仅打印 2

背景:我正在写一个扫雷游戏。当一个按钮有地雷时它会爆炸,然后我尝试再次播放并定义要清除地雷的相同按钮,但由于第一个定义,按下它会再次爆炸地雷。

谢谢

【问题讨论】:

    标签: user-interface haskell gtk2hs


    【解决方案1】:

    使用onClicked返回的连接注销事件处理程序:

    print1Handler <- onClicked btn (print 1)
    signalDisconnect print1Handler
    print2Handler <- onClicked btn (print 2)
    

    另外,onClicked 已被弃用;如果可能,您应该改用新的on 机制。它的用途非常相似:

    print1Handler <- on buttonActivated btn (print 1)
    signalDisconnect print1Handler
    print2Handler <- on buttonActivated btn (print 2)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-26
      • 1970-01-01
      • 1970-01-01
      • 2014-09-02
      • 2021-08-11
      相关资源
      最近更新 更多