gWidgets:调整组合框大小以适应内容

时间:2012-10-15 10:53:40

标签: r gtk gwidgets

我使用gWidgets和RGtk2创建了一个GUI。 GUI的一部分是带有一组gcombobox的glayout。这些框最初为空,一旦导入文件就会填充。

在Mac上,Gtk +在X11中运行,组合框的宽度会调整大小以适应组合框中最长的文本字符串。在Windows上,这不会发生,组合框会获得滚动条以容纳长文本字符串(见图片)。

Combobox on Windows

Combobox on Mac

我尝试关闭和打开可见性以强制重绘,但尺寸保持不变。

无论如何都要强制调整Windows机器的大小?

持有相关小部件的容器的代码是:

optionsBox <- ggroup(cont=controlGroup)
addSpring(optionsBox)
options <- glayout(cont=optionsBox, spacing=5, fill='y')
optList <- list()
options[1, 1, anchor=c(1,0)] <- 'Category:'
options[1, 2, anchor=c(-1,0)] <- optList$category <- gcombobox(category, cont=options)
options[2, 1, anchor=c(1,0)] <- 'Order:'
options[2, 2, anchor=c(-1,0)] <- optList$order <- gcombobox(order, cont=options)
options[2, 3, anchor=c(1,0)] <- optList$numeric <- gcheckbox('numeric', checked=TRUE)
options[3, 1, anchor=c(1,0)] <- 'Plottype:'
options[3, 2, anchor=c(-1,0)] <- optList$plottype <- gcombobox(c('Bar', 'Line'), cont=options)
addSpring(optionsBox)

祝福

托马斯

1 个答案:

答案 0 :(得分:2)

我无法在Windows上轻松测试,但有些事情应该有所帮助。首先,确保glayout对象的父容器不限制初始大小。 (在下面的示例中,尝试设置do_expand=FALSE以查看会发生什么。)除非您使用size<-方法设置窗口小部件的大小(不是最佳用法,但有时您可以做的所有事情)初始大小将来自满足您的小部件的大小要求。

library(gWidgets)
options(guiToolkit="RGtk2")
w <- gwindow()
g <- ggroup(cont=w)
do_expand=TRUE
options <- glayout(cont=g, spacing=5, expand=do_expand)
items <- ""

options[1,1] = "vanilla"
options[1,2] <- gcombobox(items, cont=options)

options[2,1] = "expand"
options[2,2, expand=TRUE] <- gcombobox(items, cont=options)

options[3,1] = "expand, fill"
options[3,2, expand=TRUE, fill="y"] <- gcombobox(items, cont=options)

options[4,1] = "size"
options[4,2] <- (cb <- gcombobox(items, cont=options))
size(cb) <- c(250, -1)

## populate comboboxes 
items <- state.name 
sapply(options[,2], function(i) i[] <- items)