2010-08-25 19 views
0

如何在窗口底部創建狀態行?不活動的條目看起來不太好。還有什麼其他選擇?如何用ttk創建一個狀態行?

是否可以集成一個僅在需求時纔可見的進度條?

(我使用TK和TTK從內部R.)

編輯:現在,這裏是我的第二個版本,它工作正常,我,但我想,以顯示對需求的整體狀態欄只(類似於Chrome瀏覽器中的狀態欄)。我怎樣才能做到這一點?調用tklower(六)沒有幫助...

library(tcltk) 
library(tcltk2) 
tkdestroy(root) 
root <- tktoplevel() 
status <- tclVar("") 
progress <- tclVar("0") 
b <- tk2button(root, text="fake doing something!") 
tkpack(b, padx=40, pady=10) 
o <- tk2checkbutton(root, text="show progress", variable=progress) 
tkpack(o, pady=10) 

f <- tk2frame(root, relief="sunken") 
l <- tk2label(f, textvariable=status) 
tkpack(l, side="left", pady=2, padx=5, expand=0, fill="x") 
tkpack(f, side="left", expand=1, fill="x", anchor="s") 

sg <- ttksizegrip(root) 
tkpack(sg, side="left", expand=0, anchor="se") 

doit <- function() { 
    tclvalue(status) <- "working (hard) ..." 
    tcl("update") 
    do.pb <- tclvalue(progress)=="1" 
    if(do.pb) { 
     pb <- tk2progress(f, length=60, mode="determinate") 
     tkpack(pb, side="right", expand=0, padx=3, pady=2)   
     tkconfigure(pb, maximum=100, value=0) 
    } 
    for(i in 1:100) { 
     if(do.pb) { 
      tkconfigure(pb, value=i) 
      tcl("update") 
     } 
     Sys.sleep(0.03) 
    } 
    if(do.pb) tkdestroy(pb) 
    tclvalue(status) <- "Ready." 
} 
tkconfigure(b, command=doit) 

tclvalue(status) <- "Ready." 

回答

2

我使用的是一個ttk::frame小部件。我將在最右側放置一個或多個ttk::label小部件和一個ttk::sizegrip小部件。

至於進度條 - 只需像往常一樣添加即可。如果您使用網格,則可以使用grid remove將其從狀態欄中刪除,但網格會記住它的設置,以便您可以將其添加回來。或者,您可以使用lowerraise將其從視圖中移除並重新放回。

您對sizegrip小部件的問題尚不清楚。怎麼樣在Windows上不適合你?

+0

謝謝 - 這讓我開始了! – 2010-08-26 19:24:32

+0

你能詳細說明一下嗎?我無法弄清楚如何使用它們。一個指向最小范例的指針將是完美的! – 2010-08-26 20:29:34

1

通過狀態行,你的意思是像你找到大多數瀏覽器窗口底部的狀態欄?如果是這樣,我通常使用一個標籤,其文本變量鏈接到一個包含狀態字符串的變量。

相關問題