0

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

在带有 Gtk+ 通过 X11 运行的 mac 上,组合框的宽度被调整大小以适合组合框中最长的文本字符串。在 Windows 上,这不会发生,并且组合框有滚动条来容纳长文本字符串(参见图片)。

Windows 上的组合框

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)

最好的祝愿

托马斯

4

1 回答 1

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)
于 2012-10-15T12:49:18.533 回答