我需要在屏幕顶部显示消息框。所以,我尝试了:
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()
但是它不会显示在屏幕上。 (应该先显示/优先)。
答案 0 :(得分: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()