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

时间:2018-11-26 11:44:44

标签: string python-3.x tkinter tkinter-entry simpledialog

我正在尝试创建一个弹出窗口,以便有人可以在“输入”框中填写字符串。我已经看过很多例子,但这是行不通的。

我正在尝试这样做:

    var_entry = simpledialog.askstring("Test", "Test")

我收到此错误消息:

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

谢谢!

编辑:张贴了错误的错误消息

2 个答案:

答案 0 :(得分:1)

我知道这是一个旧线程,但是我遇到了同样的问题,到目前为止尚未找到根本原因。

但是,如果其他人需要此解决方法,那么它对我有用:

#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()

答案 1 :(得分:0)

我还可以通过使用上面的 workaround suggested by John D 解决这个问题。

我对此做了一些研究,似乎在满足以下所有条件时会引发此异常。

  • 调用 simpledialog.askstring 方法的线程不是主线程。
  • parent 中指定的 Tk 窗口或 default_root 变量中指定的 Tk 窗口与调用 simpledialog.askstring 方法的线程不同。

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

相关问题