3

我正在尝试制作一个弹出窗口,有人可以在其中填写条目框中的字符串。我已经经历了很多例子,但它不起作用。

我正在尝试这样做:

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

我收到此错误消息:

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

提前致谢!

编辑:发布错误的错误信息

4

2 回答 2

4

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

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

#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()
于 2020-06-25T18:31:13.137 回答
0

通过使用John D 建议的上述解决方法,我还能够解决该问题。

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

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

但是,我想不出一个处理这个问题的过程。我希望这有助于解决问题。

于 2021-01-08T09:36:39.187 回答