我需要在屏幕顶部显示消息框。所以,我尝试过:
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()
但它没有显示在屏幕上。 (首先应该是可见的/优先考虑它...)
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()