Question

Comment créer votre ligne d'état au bas de votre fenêtre? Une entrée inactive ne semble pas très agréable. Quelles autres options sont là?

est possible d'intégrer une barre de progression qui est visible que sur la demande?

(J'utilise tk et TTK à partir de R).

EDIT : Maintenant, voici ma deuxième version, qui fonctionne très bien pour moi, mais je voudrais afficher toute la barre d'état sur demande seulement (semblable à ce que la barre d'état dans le navigateur Chrome ne ). Comment puis je faire ça? Appel tklower (f) ne pas d'aide ...

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."
Était-ce utile?

La solution

J'utilise un widget ttk::frame. Dans ce que je vais placer un ou plusieurs widgets ttk::label, et un widget ttk::sizegrip à l'extrême droite.

En ce qui concerne la barre de progression - il suffit de l'ajouter comme d'habitude. Si vous utilisez la grille, vous pouvez utiliser grid remove pour le retirer de la barre d'état, mais la grille mémorise ses paramètres afin que vous puissiez ajouter de nouveau à droite. Ou bien, vous pouvez lower utilisateur et raise pour le retirer de la vue et de le ramener à nouveau.

Votre question sur le widget SizeGrip ne sait pas. Qu'en est-il ne fonctionne pas pour vous sur les fenêtres?

Autres conseils

Par ligne d'état voulez-vous dire que la barre d'état, vous trouverez au bas de la plupart des fenêtres de navigateur? Si oui, je l'habitude d'utiliser une étiquette avec son textvariable lié à une variable contenant la chaîne d'état.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top