1

我正在考虑创建一个带有 2 个复选按钮的小部件,每个复选按钮都在一个 tkframe 中。通过单击第一个检查按钮,我希望第一帧将展开以显示更多选项行。但是当单击第二个检查按钮时,我希望第二个框架会扩大,但第一帧会缩小到只包含第一个检查按钮。这就像通过单击复选按钮激活了几条隐藏线。有谁知道如何做到这一点?

谢谢,DD

4

1 回答 1

2

您可以在 gWidgets for tcltk(或 github 上的 gWidgets2 中获得类似的东西,您可以在其中看到它是如何完成的https://github.com/jverzani/gWidgets2tcltk/blob/master/R/gexpandgroup.R)。这是模式:

library(gWidgets)
options(guiToolkit="tcltk")

lorem <- "lorem ipsum dolor sit amet, consectetur adipiscing
elit. Suspendisse tempus aliquam ante, at malesuada tellus
vulputate at. Morbi ac diam augue, vel bibendum lorem.
Curabitur ut est molestie leo sagittis vestibulum.
"

w <- gwindow()
size(w) <- c(800, 400)
g <- ggroup(cont=w, horizontal=FALSE)
expand1 <- gexpandgroup("frame 1", cont=g, anchor=c(-1,1))
expand2 <- gexpandgroup("frame 2", cont=g, anchor=c(-1,1))
visible(expand2) <- FALSE

## put stuff into expanding groups
glabel(lorem, cont=expand1)
glabel(lorem, cont=expand2)

callback <- function(h,...) {
  print("click 2")
  if(visible(expand2) & visible(expand1))
    visible(expand1) <- FALSE
}
addHandlerChanged(expand2, callback)

expandgroup 小部件实际上仅在堆叠时才有效,而不是并排。用普通的 tcltk 将其集成到 GUI 中并非不可能。

于 2013-03-28T13:08:01.303 回答