在tcl中的单独窗口上显示进度条



当我的一些代码正在运行时,我需要帮助用Tcl/tk为窗口进度条编写代码。进度条窗口可能在屏幕的左侧或右侧。

除非您使用的是旧版本(如果是,请升级!),否则您应该有一个Tk附带的进度条。ttk::progressbar非常易于使用,并支持一些使用模式。最简单的方法之一是将其绑定到全局变量:

set progress 0
pack [ttk::progressbar .p -variable progress]
# Run the progress bar from 0% to 100%, one step every 0.1s, after a 1s pause
proc updateProgress {} {
global progress
if {$progress < 100} {
incr progress
after 100 updateProgress
}
}
after 1000 updateProgress

最棘手的是,必须在使用进度条的同时继续为事件循环提供服务,这样它就有机会更新(这可能是当前小部件主题所需要的),就像用Tk做其他事情一样。如果你正在做CPU繁重的工作,你可能需要不时地添加对update的调用(理想情况下,每秒至少10次),而这反过来又需要小心,因为在工作时GUI的其他部分生成事件可能会出现可重入性问题。

相关内容

  • 没有找到相关文章

最新更新