Wie eine Statuszeile mit ttk zu schaffen?
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."
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.