Выход из диалогового окна после нажатия

Я использую fxruby для создания диалогового окна, которое имеет несколько вариантов. Вот часть, где я отображаю одну опцию и что происходит после нажатия на эту опцию.

# Download file
dwd_file= FXButton.new(contents,
  "&Download\tDownload file",
  :opts => FRAME_RAISED|FRAME_THICK|LAYOUT_BOTTOM |LAYOUT_FIX_WIDTH|LAYOUT_FIX_HEIGHT,
  :width => 150, :height => 50)
  dwd_file.connect(SEL_COMMAND, method(:download))


def download(sender, sel, ptr)
  # Doing something which will take time. 
end

Dwd_file.connect выполнит метод загрузки, который делает что-то, что требует времени.

Вопрос: диалоговое окно висит до тех пор, пока этот метод не будет выполнен, как мы можем закрыть его при нажатии и позже метод будет запущен?

Спасибо за любой совет?

2 ответа

Решение
def download(sender, sel, ptr)
  self.close
  # Do that which will take time. 
end

В fxruby вы создадите свой собственный класс и наследуете FXMainWindow clss или любой другой класс из библиотеки fxruby, например.

self будет указывать на ваш класс, который фактически создает диалоговое окно в соответствии с вашим примером, таким образом self.close сначала закроет диалоговое окно, а затем вы можете продолжить тяжелую работу.

Не иметь представителя, чтобы оставить комментарий, поэтому предположим, что это один. Вы пытались передать dwd_file в качестве аргумента методу загрузки, когда метод загрузки сначала закрывал диалоговое окно, а затем продолжал с той логикой, которую вы намеревались выполнить? Это должно избавить от диалогового окна без проблем, если только ваш метод загрузки не использует какой-либо элемент dwd_file

Другие вопросы по тегам