使用R在现有tcltk窗口中显示进度条

时间:2013-07-24 06:59:53

标签: r progress-bar tcl tk exists

我的程序包含一个主窗口,我想在其中显示进度条。我使用tcltk和R。

以下代码显示了如何在新弹出的窗口中显示进度条,这不是我想要做的:我希望它在我之前创建的窗口中。

pb <- tkProgressBar("test progress bar", "Some information in %",0, 100, 50)
Sys.sleep(0.5)
u <- c(0, sort(runif(20, 0, 100)), 100)
for(i in u) {
    Sys.sleep(0.1)
    info <- sprintf("%d%% done", round(i))
    setTkProgressBar(pb, i, sprintf("test (%s)", info), info)
}
Sys.sleep(5)
close(pb)

我不知道如何将它插入我的窗口。

谢谢

1 个答案:

答案 0 :(得分:2)

这几乎从this answer解除了。要点是tkProgressBar不会得到你想要的东西。相反,tk2progress包中的函数tcltk2。使用该功能,您可以创建一个可以放在窗口中的小部件。

root <- tktoplevel()

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

tkgrid(l1, row = 0)
tkgrid(pb1, row = 1)

for (index in 1:10){

    tkconfigure(l1, text = paste("Index", index))
    tkconfigure(pb1, value = index - 1)
    Sys.sleep(1)
}