在python中将tkinter Messagebox放在屏幕顶部

问题描述 投票:1回答:1

我需要在屏幕顶部显示消息框。所以,我尝试过:

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

但它没有显示在屏幕上。 (首先应该是可见的/优先考虑它...)

python python-3.x tkinter messagebox
1个回答
0
投票

messagebox模块使用platform native functions on 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()
© www.soinside.com 2019 - 2024. All rights reserved.