user-interface - 在 Haskell 中覆盖事件

标签 user-interface haskell gtk2hs

我正在用 GUI 编写一个 Haskell 程序。当我编写以下代码时

    onClicked btn $ do
           print 1

    onClicked btn $ do
           print 2

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

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

谢谢

最佳答案

使用 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)

关于user-interface - 在 Haskell 中覆盖事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8680014/

相关文章:

c# - 卡住用户界面 c# winforms

haskell - Haskell 中是否有通用类型类的百科全书/列表?

haskell - 为什么这个 Haskell 程序中没有使用尾调用优化?

haskell - marshaller 中的 c2hs 与 gtk2hsC2hs

macos - 尝试在缺少依赖项的 Mac 上安装 gtk

c# - C# GUI 代码错误

user-interface - 有关 GUI 应用程序中线程数的最佳实践

java - JTextArea画Java?

haskell - 中缀数据构造运算符的解释

windows - 如何在 Windows 上打包 haskell gtk2hs glade 应用程序?