tkinter askstring在其可见性更改之前已删除

tkinter askstring在其可见性更改之前已删除,string,python-3.x,tkinter,tkinter-entry,simpledialog,String,Python 3.x,Tkinter,Tkinter Entry,Simpledialog,我试图做一个弹出窗口,有人可以填写一个输入框中的字符串。我看过很多例子,但都不管用 我正试图做到这一点: var_entry = simpledialog.askstring("Test", "Test") 我收到以下错误消息: _tkinter.TclError: window ".!_querystring" was deleted before its visibility changed 提前谢谢 编辑:发布了错误的错误消息我知道这是一个旧线程,但我遇到了相同的问题,到目前为

我试图做一个弹出窗口,有人可以填写一个输入框中的字符串。我看过很多例子,但都不管用

我正试图做到这一点:

    var_entry = simpledialog.askstring("Test", "Test")
我收到以下错误消息:

_tkinter.TclError: window ".!_querystring" was deleted before its visibility changed
提前谢谢


编辑:发布了错误的错误消息

我知道这是一个旧线程,但我遇到了相同的问题,到目前为止还没有找到根本原因

但是,如果其他人需要,此变通方法对我有效:

#Create a new temporary "parent"

newWin = Tk()

#But make it invisible

newWin.withdraw()

#Now this works without throwing an exception:

retVal = simpledialog.askstring("Enter Value","Please enter a value",parent=newWin)

#Destroy the temporary "parent"

newWin.destroy()

通过使用上述方法,我也能够解决这个问题

我对此做了一些研究,当满足以下所有条件时,似乎会出现这个例外

  • 调用
    simpledialog.askstring
    方法的线程不是主线程
  • 父级中指定的Tk窗口或默认_根变量中指定的Tk窗口与调用
    simpledialog.askstring
    方法的线程不同

然而,我无法想出一个处理这个问题的过程。我希望这有助于解决这个问题。

如果包含一个。现在只有一条错误消息,没有可复制的源。没有更多。它是一个以线程启动的方法。我不能显示更多的代码,因为公司不允许我。如果不能像这样提供帮助,我会删除这个问题。最好是作为对另一个答案的评论,而不是答案本身。然而,你必须有一定的声誉才能做到这一点。