【问题标题】: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)