Использование диалогового окна предупреждения JavaFX позволяет заморозить задачу JavaFX [дублировать]

Первый конвертировать столбец date to_datetime и вычесть одну неделю.

Затем используйте groupby с Grouper с помощью W-MON и агрегата sum:

df['Date'] = pd.to_datetime(df['Date']) - pd.to_timedelta(7, unit='d')
df = df.groupby(['Name', pd.Grouper(key='Date', freq='W-MON')])['Quantity']
       .sum()
       .reset_index()
       .sort_values('Date')
print (df)
     Name       Date  Quantity
0   Apple 2017-07-10        90
3  orange 2017-07-10        20
1   Apple 2017-07-17        30
2  Orange 2017-07-24        40

12
задан Lambda II 18 February 2013 в 18:58
поделиться

1 ответ

Решение

Когда ваш фоновый процесс сталкивается с ситуацией, когда требуется, чтобы пользователь запрашивал ввод, используйте FutureTask , выполненный в Platform.runLater - showAndWait диалоговое приглашение в потоке приложения JavaFX. В фоновом режиме используйте futureTask.get , чтобы приостановить фоновый процесс, пока пользователь не введет необходимые значения, которые позволят продолжить процесс.


Образец Code snippet

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

String nextText = readLineFromSource();
if ("MISSING".equals(nextText)) {
  updateMessage("Prompting for missing text");
  FutureTask<String> futureTask = new FutureTask(
    new MissingTextPrompt()
  );
  Platform.runLater(futureTask);
  nextText = futureTask.get();
}
...
class MissingTextPrompt implements Callable<String> {
  private TextField textField;

  @Override public String call() throws Exception {
    final Stage dialog = new Stage();
    dialog.setScene(createDialogScene());
    dialog.showAndWait();
    return textField.getText();
  }
  ...
}

Пример приложения

Я создал небольшое, полное примерное приложение , чтобы продемонстрировать этот подход.

Выходной пример приложения-примера:

promptingtaskdemooutput [/g9]

Пример вывода Объяснение

Линии, считанные без пропущенных значений, являются просто коричневыми. Строки с введенным быстрым значением имеют бледно-зеленый фон. Четырнадцать строк были прочитаны, фоновая задача уже приостановлена ​​на 6-й строке, где отсутствует значение. Пользователю было предложено указать отсутствующее значение (к которому пользователь ввел xyzzy), затем процесс продолжался до строки 14, которая также отсутствует, и фоновая задача снова приостановлена, и отображается диалоговое окно приглашения.

21
ответ дан jewelsea 27 August 2018 в 06:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: