覆盖Haskell中的事件

Isl*_*san 4 user-interface haskell gtk2hs

我正在用GUI编写haskell程序.当我写下面的代码

    onClicked btn $ do
           print 1

    onClicked btn $ do
           print 2
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢

Dan*_*ner 6

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

print1Handler <- onClicked btn (print 1)
signalDisconnect print1Handler
print2Handler <- onClicked btn (print 2)
Run Code Online (Sandbox Code Playgroud)

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

print1Handler <- on buttonActivated btn (print 1)
signalDisconnect print1Handler
print2Handler <- on buttonActivated btn (print 2)
Run Code Online (Sandbox Code Playgroud)