微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

等到标签显示

如何解决等到标签显示

所以在我的 Tcl/Tk 应用程序中,我有一个带有文本变量的标签

    label .mylabel -textvariable statustext -relief sunken -anchor w

我可以通过使用 set statustext "sponatenous error" 之类的东西很好地更改标签内容

不幸的是,有时在更新此变量后会进行一些“繁重的处理”,这会导致 GUI 暂停一段时间(例如,从 Internet 下载文件)。

set statustext "downloading from $url"
download $url

由于事件队列被阻塞(至少,我猜是这样),GUI 不会得到任何刷新,label 也不会显示我的最新消息。

有没有办法在开始我的“繁重过程”之前强制更新标签文本(最好通过文本变量)?

解决方法

如果您在繁重的处理之前执行update idletasks实际的 GUI 更新代码将运行。 Tk 以这种方式工作是因为实际 GUI 绘图非常昂贵,这使它能够有效地进行更新。这是一个非常巧妙的设计,使 Tk GUI 看起来超快超过 25 年。

在某些情况下,一个完整的 update 是必要的——这可能会导致事件处理重入的各种问题——但更新标签通常可以使用更便宜且麻烦更少的变体来完成。如果您的更改不会改变标签的实际大小(这取决于您如何处理整个包含顶层的几何管理,这是一个巨大的主题),则 尤其 如此。作为提示,当您动态更改标签的文本时,如果您的 GUI 不自行调整大小通常是最好的;否则,这可能会让用户感到迷惑。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。