Как «отменить выбор» ранее выбранной кнопки при повторном включении

#ruby #button #fxruby

#ruby #кнопка #fxruby

Вопрос:

У меня есть опыт программирования старой школы, но я новичок в Ruby: для игры Hangman у меня есть кнопки A .. Z, подключенные через FXDataTarget (установлено значение -1, чтобы первая кнопка не выбиралась автоматически). Во время воспроизведения при нажатии каждой кнопки она отключается. Чтобы инициализировать новую игру, я повторно включаю каждую кнопку. Все хорошо, за исключением того, что последняя кнопка из предыдущей игры выделена и, следовательно, недоступна (пока не будет нажата другая кнопка). Я, очевидно, хотел бы, чтобы ВСЕ кнопки были установлены во время загрузки.

Я пробовал изменять атрибуты (ButtonStyle и State); Я пробовал killFocus; Я даже пытался воссоздать FXDataTarget. Ни один из них не имеет никакого эффекта.

 @letterSel =FXDataTarget.new(-1)

letterBtns = {}
("A".."Z").each_with_index do |ltr, x|
   letterBtns[x] = FXButton.new(matrix, ltr, opts:FRAME_RAISED, target:@letterSel, selector:FXDataTarget::ID_OPTION (x))
end

@letterSel.connect(SEL_COMMAND) do |sender, sel, data|
   ltr = letterBtns[data].text
   letterBtns[data].disable
end

newGameBtn.connect(SEL_COMMAND) do |sender, sel, data|
   matrix.each_child do |btn|
      btn.enable
      # And here is where I try manipulating the button's appearance/functionality
   end
end
  

Ответ №1:

Хорошо, я немного глуп — ответ был очевиден! Все, что мне нужно было сделать, это вернуть значение FXDataTarget обратно в -1: @letterSel.value = -1

(Я не знаю, как пометить это как разрешенное)