Получение окна сообщений tkinter вверху экрана в python - PullRequest
0 голосов
/ 15 сентября 2018

Мне нужно, чтобы окно сообщения отображалось в верхней части экрана.Итак, я попробовал:

from tkinter import *
from tkinter import ttk
from tkinter import messagebox
root = Tk()

top_box = Toplevel(root)

messagebox.showerror("title","message",parent=top_box)

root.mainloop()

Результат, который я получил: панель задач привлекает внимание тем, что что-то новое было открыто.enter image description here

Но это не отображается на экране.(Сначала должен быть виден / ему будет дано Приорти ..)

1 Ответ

0 голосов
/ 17 сентября 2018

Модуль 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()
...