首页 > 解决方案 > Getting tkinter Messagebox at top of the screen in python

问题描述

I need message box to be displayed on the top of the screen. So, I tried:

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()

The result I got is: taskbar gives attraction that something new has been open. enter image description here

But it doesn't show on the screen. (Should be visible first/ Priorty to be given to it..)

标签: pythonpython-3.xtkintermessagebox

解决方案


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()

推荐阅读