2011-12-30 6 views
4

Я пишу программу haskell с графическим интерфейсом. Когда я пишу следующий фрагмент кодаПереопределение событий в Haskell

onClicked btn $ do 
      print 1 

    onClicked btn $ do 
      print 2 

Нажатие BTN привело к печати 1 и 2 одновременно Как я могу отменить определение функции таким образом, что последнее определение заменяет первый и печатает 2 только

фона : Я пишу тральщик. Когда у кнопки есть шахта, она взрывается, затем я пытаюсь снова сыграть и определить ту же кнопку, которая будет очищена от мин, но нажатие на нее снова взорвет мишу из-за первого определения.

Благодаря

ответ

6

Используйте соединение возвращенное 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) 
Смежные вопросы