Итак, в моем коде есть кнопка, которая делает две вещи: запускает процесс, который занимает некоторое время, а также открывает окно с индикатором выполнения, которое работает до тех пор, пока другой процесс не завершится, а затем закрывается. Я хочу сделать так, чтобы оно (окно с индикатором выполнения) также закрывалось, если появляется окно сообщения. Таким образом, если длинный процесс будет испорчен, индикатор выполнения не будет работать вечно. Ниже приведен фрагмент моего кода (все остальное, что не показано, работает так, как я хочу):
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
поэтому основная идея: окно индикатора выполнения открывается при нажатии одной кнопки и работает до тех пор, пока сообщение об ошибке не появится при нажатии другой кнопки.
Возможно, вы можете после отображения ошибки вызвать функцию, закрывающую окно:
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()