Как я могу принудительно закрыть окно, когда появляется/открывается окно сообщения (например, сообщение об ошибке)?

Итак, в моем коде есть кнопка, которая делает две вещи: запускает процесс, который занимает некоторое время, а также открывает окно с индикатором выполнения, которое работает до тех пор, пока другой процесс не завершится, а затем закрывается. Я хочу сделать так, чтобы оно (окно с индикатором выполнения) также закрывалось, если появляется окно сообщения. Таким образом, если длинный процесс будет испорчен, индикатор выполнения не будет работать вечно. Ниже приведен фрагмент моего кода (все остальное, что не показано, работает так, как я хочу):

def progress_bar():
    info_window = Toplevel(main_window)
    info_window.title("Progress_Bar")
    info_window.geometry("200x50")
    progress = Progressbar(info_window, orient=HORIZONTAL, length=200, mode='indeterminate')
    label3 = Label(info_window, text = "Loading...")
    label3.pack() 
    while true != "True":
        progress.pack()
        progress['value'] += 1
        info_window.update_idletasks()
        time.sleep(0.01)
    if progress['value'] == 100:
        progress['value'] = 0
    if true == "True":
        info_window.destroy()
    if show_error_message() == True:   # <-- This is where I'm unsure; this statement
        info_window.destroy()          # Obviously doesn't work but I don't know
                                       # exactly how to phrase it correctly to make it work
def show_error_message():
    messagebox.showerror("ERROR 4343", "KILLIN' IT")  # <-- this occurs when I press a different button 
                                                      

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

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
333
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

def closewindow():
    #do something like saving before closure
    info_window.destroy()
    self.root.destroy() #if you also want to close the main window

def show_error_message():
    messagebox.showerror("ERROR 4343", "KILLIN' IT") 
    closewindow()

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