0

ウィンドウの下部にステータス ラインを作成するにはどうすればよいでしょうか。非アクティブなエントリは見栄えがよくありません。他にどのようなオプションがありますか?

オンデマンドでのみ表示される進行状況バーを統合することは可能ですか?

(私は R 内から tk と ttk を使用しています。)

編集:これは私の2番目のバージョンです。これは私にとってはうまく機能しますが、ステータスバー全体をオンデマンドでのみ表示したいと思います(Chromeブラウザのステータスバーと同様)。どうやってやるの?tklower(f) を呼び出しても役に立ちません...

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."
4

2 に答える 2

2

ttk::frameウィジェットを使用しています。その中で、1 つまたは複数ttk::labelのウィジェットを配置し、ttk::sizegripウィジェットを右端に配置します。

プログレスバーについては、いつものように追加してください。グリッドを使用grid removeしている場合は、ステータスバーからグリッドを削除できますが、グリッドはその設定を記憶しているため、すぐに追加することができます。または、 を使用lowerraiseてビューから削除し、再び表示することもできます。

sizegrip ウィジェットに関するあなたの質問は不明です。Windowsでうまくいかないのはどうですか?

于 2010-08-26T10:56:51.327 に答える
1

ステータス ラインとは、ほとんどのブラウザ ウィンドウの下部にあるステータス バーのようなものですか? その場合、私は通常、テキスト変数がステータス文字列を含む変数にリンクされたラベルを使用します。

于 2010-08-26T03:23:34.630 に答える