Tcl/Tk: 如何创建一个带有状态文本的进度条?

Tcl/Tk: How to create a progress bar with a status text inside?

我想使用 Tcl/Tk >= 8.5 创建一个进度条,它不仅 以图形方式显示进度,而且还以数字(居中)的形式显示进度百分比进度条(例如“12 %”)。

我正在考虑透明地覆盖进度条和标签,或者将其设为另一个小部件的父级,但我想不出解决方案。

有什么想法吗?

这里是一个简单的程序框架:

proc Counter {} {
  for {set i 0} {$i < 100} {incr i} {
    puts "$i"
    after 25
    .pb configure -value $i
    update idletask
  }
}

ttk::progressbar .pb -orient horizontal -maximum 100 -length 400 -value 0
button .bt -text "Start counter" -command Counter
pack .pb
pack .bt

通常,你不会。进度条的标准平台渲染不支持这样的标签。

但是, 你可以用 frames 和 labels 来破解一些东西(巧妙地使用place)。我很久以前写了 this page,其中有指向执行此操作的代码的链接。它应该仍然有效,但它可能看起来不像你真正想要的那样:多年来这些东西应该是什么样子的标准发生了很大变化。

讨厌self-promotion,但我不知道有任何其他代码可以做到这一点。