如何在窗口底部创建状态行?不活动的条目看起来不太好。还有哪些其他选择?

是否可以整合仅根据需求可见的进度栏?

(我正在使用R内部的TK和TTK)

编辑: :现在,这是我的第二个版本,对我来说很好,但是我只想按需显示整个状态栏(类似于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 remove 要将其从状态栏中删除,但网格会记住其设置,以便您可以立即添加。或者,您可以用户 lowerraise 将其从视图中删除,然后再次将其带回。

您关于SizeGrip小部件的问题尚不清楚。在Windows上对您不起作用吗?

其他提示

按状态行,您的意思是像大多数浏览器窗口底部找到的状态栏吗?如果是这样,我通常使用及其文本变量的标签链接到包含状态字符串的变量。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top