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

时间:2017-02-01 16:35:44

标签: progress-bar tcl tk

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

1 个答案:

答案 0 :(得分:2)

除非你使用古老的版本(如果你是,升级!),你应该有一个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的其他部分会产生问题。