Windows 10 с Python 2.7.13 (32 бита)
У меня есть программа Python tkinter с индикатором выполнения. Программа выполняет длительную операцию, а затем ждет заданное количество времени, прежде чем повторить ее.
Чтобы предоставить обратную связь пользователю, индикатор хода выполнения обновляется в режиме определения параметров при обратном отсчете до следующей операции. , а затем переключается на неопределенную полосу во время операции (неизвестной продолжительности).
Через 15-30 минут, во время обратного отсчета с использованием приведенного ниже кода, Windows выскакивает python .exe перестал работать диалог , предлагающий только возможность закрыть программу, и программа не отвечает (предположительно потому, что Windows остановил ее).
Я не могу понять, почему это происходит. В течение этого времени в GUI выполняется следующий сегмент кода:
def wait_nextop(self, delay):
end = time.time() + delay
self.progress_bar.stop()
self.progress_bar.config(mode = 'determinate', max = delay)
while time.time() < end:
remaining = (end - time.time()) + 1
self.progress_bar.config(value = (delay - remaining))
remaining_text = str(datetime.timedelta(seconds = int(remaining)))
self.progress_text.config(text = 'Next operation in ' + remaining_text)
time.sleep(0.1)
self.progress_text.config(text = 'Operation in progress')
self.progress_bar.config(mode = 'indeterminate')
self.progress_bar.start()
При этом delay является целочисленной задержкой в секундах. self.progress_bar является экземпляром ttk.ProgressBar и self.progress_text является экземпляром tkinter.Label . time и datetime взяты из стандартных библиотек.
Python не предлагает трассировки стека, и в настоящее время у меня нет других доступных систем для тестирования этого. Следует отметить, что эта GUI функция вызывается другим потоком, но предназначена для выполнения в основном потоке.
Я видел подобные вопросы, но не смог найти рабочее разрешение: