Каков наилучший способ сообщить функции в tkinter GUI о необходимости дождаться разрешения системного вызова, выполненного shutils, прежде чем продолжить? - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть tkinter GUI, который в какой-то момент запрашивает у пользователя папку, проверяет, существует ли она, а затем, если она есть, и пользователь соглашается, удаляет и воссоздает ее. Я делаю это с помощью следующего кода:

try:
   self.status_string.set('Cleaning up output directory to be overwritten')
   shutil.rmtree(output_folder)
   while os.path.exists(output_folder):
       time.sleep(1)
    os.makedirs(output_folder + '/events')
except OSError:
    self.status_string.set('Failed to create directory {0}, verify that you have permission to do so'.format(output_folder + '/events'))

В настоящее время я звоню time.sleep, чтобы заставить его ждать, пока каталог будет полностью удален, прежде чем пытаться воссоздать его, потому что содержимое может быть большой, и это может занять некоторое время, и я хочу избежать состояния гонки. Но мне кажется неправильным использовать sleep во время mainloop из tkinter, и я не уверен, что проверка существования после вызова rmtree действительна. Кажется, это работает в тестировании, но это может быть удачей. Как правильно дождаться разрешения системного вызова, прежде чем продолжить?

...