如何在窗口底部创建状态行?非活动条目看起来不太好。还有哪些其他选择?
是否可以整合仅在需要时可见的进度条?
(我在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."
答案 0 :(得分:2)
我使用ttk::frame
小部件。我会在最右边放置一个或多个ttk::label
窗口小部件和一个ttk::sizegrip
窗口小部件。
至于进度条 - 只需像往常一样添加它。如果您使用网格,则可以使用grid remove
将其从状态栏中删除,但网格会记住其设置,以便您可以立即添加它。或者,您可以使用lower
和raise
将其从视图中删除,然后再将其恢复。
关于sizegrip小部件的问题尚不清楚。它在Windows上对你有用吗?
答案 1 :(得分:1)
按状态行,您的意思是您在大多数浏览器窗口底部找到的状态栏吗?如果是这样,我通常使用一个标签,其textvariable链接到包含状态字符串的变量。