2011-12-08 37 views
2

這裏我的問題不是如何創建一個進度條,而是如何創建一個進度條來跟蹤和更新兩個不同的進程。例如在同一窗口內我想有當前模擬指數的酒吧保持跟蹤和另一間酒吧保持另一系列數字的軌道......我當前的代碼是:Double R tcltk進度條

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)) 

} 

} 

我想有兩個酒吧在一起,不分開......任何幫助讚賞!

+0

我的猜測是,你就必須深入到代碼,並創建自己的版本砍死。 –

回答

4

使用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") 
    }  

} 
+0

有幾個問題:爲什麼你需要使用tcl(「update」),爲什麼在2 tkconfigure(...)中使用value = 0,maximum = 0和value = 0,maximum = 20?謝謝你的幫助! – Francesco

+0

那些看起來像拼寫錯誤給我。我會嘗試自己的代碼,而不是害怕嘗試。你可以很快地分辨出它是否按你的意願工作。 –

+0

0確實是一個拼寫錯誤,應該是9 - 這與你的代碼略有不同,因爲tk2progress沒有最小/最大概念,範圍從0到最大。 tcl(「更新」)用於強制屏幕更新,請看這裏:http://www2.tcl.tk/1252 – themel