【问题标题】:tkinter showerror creating blank tk windowtkinter showerror 创建空白 tk 窗口
【发布时间】:2015-06-16 19:59:27
【问题描述】:

我有一个程序需要向用户显示图形错误消息。它是一个 tkinter GUI,所以我使用的是tkinter.messagebox.showerror

当我调用 showerror 时,它会显示错误,但还会创建一个空白的“tk”窗口,这种窗口是在调用 Tk 类的实例时创建的,例如 root = Tk()

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

生产

如何让这个空白窗口不出现?

【问题讨论】:

  • 您如何将此代码与其余代码一起使用?...它是类的一部分吗?...还是什么?
  • 给出的示例没有任何内容。你可以说它在__main__。实际代码在函数内部,仅此而已。

标签: python python-3.x tkinter messagebox tkmessagebox


【解决方案1】:
from Tkinter import *
from tkMessageBox import showerror
Tk().withdraw()
showerror(title = "Error", message = "Something bad happened")

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

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

【讨论】:

  • 您的 import 语句实际上可能适用于 Python 3.x,从未在高于 2.5 的任何东西上使用过 Tkinter,所以如果我对 import 语句不正确,请忽略!
  • 只要您的导入与我的解决方案一起工作,那么一切都很好,我的代码只是显示了我必须使用的内容。
  • 如果我给Tk().withdraw(),在我的回调方法执行后,程序不会结束。知道为什么吗?
  • showerror 关闭后不需要销毁 Tk() 吗?如果是这样,@NagabhushanSN 的解决方案似乎更完整。
【解决方案2】:

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

from tkinter import Tk
from tkinter.messagebox import showerror

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-18
    • 1970-01-01
    • 2020-04-18
    • 2015-01-20
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多