Frage

Wie Sie Ihre Statuszeile am unteren Rand des Fensters erstellen? Ein inaktiver Eintrag sieht nicht sehr schön. Welche anderen Möglichkeiten gibt es?

ist möglich, einen Fortschrittsbalken zu integrieren, die nur bei Bedarf sichtbar ist?

(Ich verwende tk und TTK aus R.)

Bearbeiten : Hier ist meine zweite Version, die gut für mich funktioniert, aber ich möchte die ganze Statusleiste nur bei Bedarf angezeigt werden (ähnlich dem, was in der Statusleiste in den Chrome-Browser funktioniert ). Wie kann ich das machen? Der Aufruf tklower (f) nicht hilft ...

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."
War es hilfreich?

Lösung

Ich benutze einen ttk::frame Widget. Dadurch, dass ich einen Ort oder mehr ttk::label Widgets und einen ttk::sizegrip-Widget auf dem rechten Seite.

Wie für die Fortschrittsbalken - einfach wie gewohnt hinzufügen. Wenn Sie Gitter verwenden, können Sie grid remove verwenden Sie es von der Statusbar zu entfernen, aber Gitter wird seine Einstellungen erinnern, so dass Sie es gleich wieder hinzufügen. Oder Sie können Benutzer lower und raise entfernen sie aus dem Blickfeld und bringen sie wieder zurück.

Ihre Frage über das Sizegrip-Widget ist unklar. Was ist damit nicht für Sie arbeiten auf Windows?

Andere Tipps

Mit dem Statuszeile meinen Sie, wie die Statusleiste am unteren Rand des Browserfenster finden? Wenn ja, ich normalerweise ein Etikett mit seiner textvariable mit einer Variablen verknüpft, um den Status Zeichenfolge enthält.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top