gWidgets中的font
方法似乎不适用于gcheckbox
(使用RGtk2工具包)。在下面的代码中,样式正确应用于glabel
对象,但gcheckbox
失败。
library(gWidgets)
w <- gwindow("test", height=50)
g <- ggroup(container=w)
cb1 <- gcheckbox(text="one", container=g)
cb2 <- gcheckbox(text="two", container=g)
label <- glabel("text", container=g)
font(cb2) <- list(size=20)
font(label) <- list(size=20)
有没有办法让这项工作?
答案 0 :(得分:0)
API中没有用于设置此字体的内容,但您可以将其破解为:
## setfont properties
setfont_hack <- function(cb, spec) {
require(RGtk2)
widget <- getToolkitWidget(cb)$getChildren()[[1]]
font_descr <- pangoFontDescriptionNew()
if(!is.null(spec$weight))
font_desc$setWeight(PangoWeight[spec$weight])
if(!is.null(spec$style))
font_desc$setStyle(PangoStyle[spec$style])
if(!is.null(spec$scale))
font_desc$setSize(spec$scale * PANGO_SCALE)
if(!is.null(spec$family))
font_desc$setFamily(spec$family)
widget$modifyFont(font_desc)
if(!is.null(spec$color))
widget$modifyFg(GtkStateType[1], spec$color)
}
cb <- gcheckbox("label", cont=gwindow())
setfont_hack(cb, list(weight="bold", color="blue"))
在复选框的标签部分(只是getToolkitWidget(cb)$ getChildren()[[1]])上调用font&lt; - 实际上应该足够了,但是继承没有正确设置。 (S3类未正确升级到S4。)
在gWidgets2RGtk2
这不是更好,但你可以这样做:
require(RGtk2)
label <- getToolkitWidget(cb)$getChildren()[[1]]
cb$set_rgtk2_font(label, list(weight="bold"))