Как сделать так, чтобы messagebox не показывалась только после нажатия ОК

Я сделал скрипт, который должен был при нажатии кнопки показывать куча ошибок.

Вот он:

from tkinter import *
import tkinter.messagebox
from time import sleep

app = Tk()
app.geometry("500x500")

def showerrors():
    for i in range(1,10):
        sleep(0.5)            
        tkinter.messagebox.showerror("еррор", "ошибка")


b = Button(app, text="нажми на меня!", command=showerrors)

b.pack()
app.mainloop()

но когда появляется ошибка, следующая ошибка появляется только когда я нажму ОК на текущей.

Можно ли это убрать? или нельзя?


Ответы (2 шт):

Автор решения: S. Nick

Попробуйте так:

from tkinter import *
import tkinter.messagebox
from time import sleep


app = Tk()
app.geometry("500x500")

def showerrors():
    error = ''
    for i in range(1, 10):
# ???        sleep(0.5)
        error = f"{error}\nошибка: {i}"
    tkinter.messagebox.showerror("Errоr", f"У Вас возникли следующие ОШИБКИ: \n{error}")


b = Button(app, text="Нажми на меня!", command=showerrors)

b.pack()
app.mainloop()

введите сюда описание изображения

→ Ссылка
Автор решения: Alex Titov

Стандартный messagebox создает модальное окно, оно поверх всего, пока не закроешь, дальше не движемся. Можно создать немодальное, но там уже кнопку ОК надо самому "нарисовать". Вот про немодальные окна https://translated.turbopages.org/proxy_u/en-ru.ru.0125fa90-63153091-090a69b1-74722d776562/https/stackoverflow.com/questions/56987557/creating-a-modeless-window-using-tkinter

→ Ссылка