在继续之前,我如何等待创建Tcl/Tk顶级小部件?

在继续之前,我如何等待创建Tcl/Tk顶级小部件?,tcl,tk,Tcl,Tk,我正在使用Tcl/Tk构建一个UI,我遇到了一个问题,即在实际创建顶级窗口之前,试图与它进行交互 我创建了顶层窗口,如下所示: toplevel .t wm stackorder .t isabove . 然后我试着像这样与它互动: toplevel .t wm stackorder .t isabove . 但是.t还不存在,我得到一个关于窗口未映射的错误。实际上,它等同于这样做: winfo ismapped [toplevel .t] 返回0,但如果我立即运行以下命令: winf

我正在使用Tcl/Tk构建一个UI,我遇到了一个问题,即在实际创建顶级窗口之前,试图与它进行交互

我创建了顶层窗口,如下所示:

toplevel .t
wm stackorder .t isabove .
然后我试着像这样与它互动:

toplevel .t
wm stackorder .t isabove .
但是
.t
还不存在,我得到一个关于窗口未映射的错误。实际上,它等同于这样做:

winfo ismapped [toplevel .t]
返回
0
,但如果我立即运行以下命令:

winfo ismapped .t
tkwait visibility .t
然后返回值为
1


我如何知道顶级窗口何时被映射(并因此准备好与之交互),以便继续我的程序?

我找到了答案,我需要以下内容:

winfo ismapped .t
tkwait visibility .t

另一个选项-而不是等待窗口可见-是使用事件()。+1,但这只适用于X11(Windows没有任何类似事件的功能)。@DonalFellows它似乎在Windows上工作得很好,正如预期的那样。