【问题标题】:Double R tcltk progress bar双R tcltk进度条
【发布时间】:2011-12-08 18:49:20
【问题描述】:

我的问题不是如何创建单个进度条,而是如何创建一个进度条来跟踪和更新两个不同的进程。例如,在同一个窗口中,我希望有一个条形来跟踪当前的模拟指数,另一个条形来跟踪另一个系列的数字......我当前的代码是:

library(tcltk2)

pb1 <- tkProgressBar(title = "Simulation Progress...", min = 1, max = 10, width = 300)
pb2 <- tkProgressBar(title = "Simulation Progress...", min = 2000, max = 2020, width = 300)

for (index in 1:10){

setTkProgressBar(pb1, index, label = paste("Index",index))

for (year in 2000:2020){

setTkProgressBar(pb2, year, label = paste("Year",year))

}

}

我希望将两个栏放在一起,而不是分开...感谢任何帮助!

【问题讨论】:

  • 我的猜测是您必须深入研究代码并创建自己的破解版本。

标签: r loops progress-bar


【解决方案1】:

无法使用tkProgressBar,您必须深入了解tcltk,如下所示:

library(tcltk2)

root <- tktoplevel()

l1 <- tk2label(root,"Simulation Progress...")
pb1 <- tk2progress(root, length = 300)
tkconfigure(pb1, value=0, maximum=9)

l2 <- tk2label(root, "Simulation Progress...")
pb2 <- tk2progress(root, length = 300)
tkconfigure(pb2, value=0, maximum=20, maximum = 20)

tkpack(l1)
tkpack(pb1)
tkpack(l2)
tkpack(pb2)

tcl("update")

for (index in 1:10){

    tkconfigure(l1, text = paste("Index", index))
    tkconfigure(pb1, value = index - 1)

    for (year in 2000:2020){
        tkconfigure(l2, text = paste("Year",year))
        tkconfigure(pb2, value = year - 2000)


    tcl("update")
    }       

}

【讨论】:

  • 几个问题:为什么需要使用 tcl("update") 以及为什么在 2 tkconfigure( ...)?感谢您的帮助!
  • 那些对我来说看起来像是错别字。我会自己尝试代码,而不是害怕尝试。您将能够很快判断它是否如您所愿。
  • 0 确实是一个错字,应该是 9 - 这与您的代码略有不同,因为 tk2progress 没有最小/最大概念,只是从 0 到最大的范围。 tcl("update") 用于强制屏幕更新,见这里:www2.tcl.tk/1252
  • 嘿伙计们,如果相反,在第二个进度条中我想看到从最小到最大的进度,然后一旦它更改为第二年(例如 2001 年),会看到相同的进度最小到最大...在每年的哪个阶段跟踪我...有什么帮助吗?
猜你喜欢
  • 2014-05-31
  • 2017-12-03
  • 1970-01-01
  • 2021-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-13
相关资源
最近更新 更多