2011-12-08 16 views
2

ここで私の質問は、1つのプログレスバーを作成する方法ではなく、2つの異なるプロセスを追跡して更新するプログレスバーを作成する方法です。私が好きなダブル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)) 

} 

} 

:たとえば、同じウィンドウ内で、私は私の現在のコードがある...現在のシミュレーションのインデックスと数字の別の一連の経過を追う他のバーを追跡するバーを持っているしたいのですが別々のものではなく、一緒に両方のバーを持っている...任意のヘルプが感謝! tkProgressBarを使用不可

+0

私の推測では、あなたがコードに掘ると、独自のハッキングバージョンを作成しなければならないということです。 –

答えて

4

、あなたは、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

2つの質問:なぜあなたはtcl( "update")を使用する必要がありますか?なぜ2つのtkconfigure(...)の中でvalue = 0、maximum = 0、value = 0、maximum = 20を使用しますか?ご協力いただきありがとうございます! – Francesco

+0

それらは私の誤植のように見えます。私は自分自身でコードを試し、実験するのを恐れることはありません。あなたは、あなたが好きなように動作するかどうかをかなり素早く伝えることができます。 –

+0

0は実際にはタイプミスで、9でなければなりません。これは、tk2progressに最小/最大コンセプトがないため、コードとわずかに異なります。0から最大までの範囲です。 tcl( "update")は、画面を強制的に更新するために使用されます。次のURLを参照してください。http://www2.tcl.tk/1252 – themel