6

I have a program that needs to display graphical error messages to users. It is a tkinter GUI, so I am using tkinter.messagebox.showerror

When I call showerror, it shows the error, but also creates a blank "tk" window, the kind created when an instance of the Tk class is called, like root = Tk().

from tkinter.messagebox import showerror
showerror(title = "Error", message = "Something bad happened")

Produces

Results Of Above Code

How can I make this blank window not appear?

4

2 回答 2

11
from Tkinter import *
from tkMessageBox import showerror
Tk().withdraw()
showerror(title = "Error", message = "Something bad happened")

在显示错误消息之前调用Tk().withdraw()将隐藏根窗口。

注意:from tkinter import *对于 Python 3.x

于 2015-06-16T20:25:58.810 回答
6

正如这个答案中所解释的,在我们创建更多小部件/对话框之前,Tkinter 需要一个根窗口。如果没有根窗口,tkinter 创建一个。因此,要使空白窗口消失,首先我们需要自己创建一个根窗口,将其隐藏并在对话操作完成后将其销毁。下面的示例代码

from tkinter import Tk
from tkinter.messagebox import showerror

root = Tk()
root.withdraw()
showerror(title = "Error", message = "Something bad happened")
root.destroy()

注意:这适用于您只需要显示一个对话框并且不存在其他窗口的情况。

于 2018-12-15T07:11:54.507 回答