Domanda

Come si fa a creare la vostra linea di stato nella parte inferiore della finestra? Una voce non attiva non ha un aspetto molto bello. Quali altre opzioni ci sono?

E 'possibile integrare una barra di avanzamento, che è visibile solo su richiesta?

(sto usando tk e TTK dall'interno R.)

Modifica : Ora qui è la mia seconda versione, che funziona bene per me, ma vorrei per visualizzare l'intera barra di stato solo su richiesta (simile a quello che la barra di stato del browser Chrome fa ). Come posso fare ciò? Chiamata tklower (f) non aiuta ...

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."
È stato utile?

Soluzione

Io uso un widget ttk::frame. In che metterò uno o più widget ttk::label, e un widget ttk::sizegrip in fondo a destra.

Per quanto riguarda la barra di avanzamento - basta inserirlo come al solito. Se si utilizza griglia, è possibile utilizzare grid remove per rimuoverlo dalla barra di stato, ma griglia si ricorderà le sue impostazioni in modo da poter aggiungere di nuovo a destra. In alternativa, è possibile lower utente e raise per rimuoverlo dalla vista e riportarlo di nuovo.

La tua domanda circa il widget di sizegrip non è chiaro. Che dire non funziona per voi su Windows?

Altri suggerimenti

In linea di stato vuoi dire come la barra di stato si trova nella parte inferiore della maggior parte delle finestre del browser? In caso affermativo, di solito utilizzare un'etichetta con la sua textvariable collegato a una variabile contenente la stringa di stato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top