Вопрос

Как вы создаете свою строку состояния в нижней части вашего окна? Неактивная запись не выглядит очень приятно. Какие еще варианты есть?

Можно интегрировать панель прогресса, которая видна только по требованию?

(Я использую TK и TTK изнутри R.)

РЕДАКТИРОВАТЬ: Теперь вот моя вторая версия, которая работает нормально для меня, но я хотел бы отобразить весь строк состояния только по требованию (аналогично тому, что делает строку состояния в браузере 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."
Это было полезно?

Решение

Я использую А. ttk::frame виджет. В этом я помещу один или несколько ttk::label виджеты и ttk::sizegrip виджет на данный момент.

Что касается прогресса, просто добавьте его как обычно. Если вы используете Grid, вы можете использовать grid remove Чтобы удалить его из состояния BARBAR, но Grid запомнит его настройки, чтобы вы могли добавить его обратно. Или вы можете пользователю lower а также raise Чтобы удалить его с вида и вернуть его снова.

Ваш вопрос о виджете SizeGrip неясно. Как насчет этого не работает на Windows?

Другие советы

По строке состояния вы имеете в виду, как строка состояния, которую вы найдете в нижней части самых браузеров Windows? Если это так, я обычно использую метку с его текстовой панелью, связанной с переменной, содержащей строку состояния.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top