【问题标题】:gWidgets: Resize combobox to fit contentgWidgets:调整组合框的大小以适应内容
【发布时间】:2012-10-15 10:53:40
【问题描述】:

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

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

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

是否有强制在 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)

祝你好运

托马斯

【问题讨论】:

    标签: r gtk gwidgets


    【解决方案1】:

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

    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)
    

    【讨论】:

    • 不幸的是,这不起作用,因为组合框没有调整大小以适应内容 - 当然,某些解决方案最初提供了一个可以容纳新数据的宽度。猜猜我必须手动将大小设置为相当合适......
    • 你可以尝试强制调整孩子的大小,虽然我没有测试过:library(RGtk2); getToolkitWidget(options)$resizeChildren()
    猜你喜欢
    • 2020-04-14
    • 2011-12-24
    • 2011-08-20
    • 1970-01-01
    • 2011-02-05
    • 2020-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多