【问题标题】:How can i wait for a Tcl/Tk toplevel widget to be created before moving on?在继续之前,我如何等待创建 Tcl/Tk 顶级小部件?
【发布时间】:2014-06-27 05:00:23
【问题描述】:

我正在使用 Tcl/Tk 构建 UI,但我遇到了在实际创建顶层窗口之前尝试与它交互的问题。

我这样创建了顶层窗口:

toplevel .t

然后我尝试像这样与之交互:

wm stackorder .t isabove .

.t 尚不存在,我收到有关窗口未映射的错误。实际上它等同于这样做:

winfo ismapped [toplevel .t]

返回 0 但如果我立即运行以下命令:

winfo ismapped .t

那么返回值为1

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

【问题讨论】:

    标签: tcl tk


    【解决方案1】:

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

    tkwait visibility .t
    

    【讨论】:

    • 另一个选项 - 而不是等待窗口可见 - 是使用 事件 (tcl.tk/man/tcl/TkCmd/bind.htm#M13)。
    • +1 但仅适用于 X11(Windows 没有类似 事件)。
    • @DonalFellows 它似乎在 Windows 上工作得很好并且符合预期。
    猜你喜欢
    • 2019-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 2015-11-18
    相关资源
    最近更新 更多