当我的一些代码运行时,我需要帮助在Tcl / tk中编写窗口进度条的代码。进度条窗口可以位于屏幕的左侧或右侧。
答案 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的其他部分会产生问题。