Модуль messagebox
использует собственные функции платформы в Windows для создания своих диалогов. Он работает независимо от каких-либо Toplevel
виджетов. Если вы хотите создать пользовательский диалог ошибок, используя Toplevel
, вы можете сделать это, и вы можете переместить его в верхнюю часть оконного менеджера, используя Toplevel.lift(self)
.
Нет возможности сделать так, чтобы окна сообщений появлялись поверх всех других окон. Единственный способ - создать собственное окно с ошибкой Toplevel
. Нечто подобное должно сработать, если вы создадите tk.Tk
где-то еще в вашей программе:
import tkinter as tk
class Error(tk.Toplevel):
def __init__(self, message):
tk.Toplevel.__init__(self)
tk.Label(self, text=message).grid(row=0, column=0)
tk.Button(self, command=self.destroy, text="OK").grid(row=1, column=0)
self.lift() # Puts Window on top
self.grab_set() # Prevents other Tkinter windows from being used
def showerror(string):
Error(string)
if __name__ == '__main__':
w = tk.Tk()
showerror("Help!")
w.mainloop()