1

gWidgetsのfontメソッドは (RGtk2 ツールキットでは) 機能しないようですgcheckboxglabel次のコードでは、スタイリングはオブジェクトに正しく適用されますが、 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)

これを機能させる方法はありますか?

4

1 に答える 1

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"))

実際には、チェックボックスのラベル部分で font<- を呼び出すだけで十分なはずですが (getToolkitWidget(cb)$getChildren()[[1]] だけ)、継承が正しく設定されていません。(S3 クラスは S4 に適切に昇格されません。)

これgWidgets2RGtk2はあまり良くありませんが、次のことができます。

require(RGtk2)
label <- getToolkitWidget(cb)$getChildren()[[1]]
cb$set_rgtk2_font(label, list(weight="bold"))
于 2013-02-19T02:19:19.497 に答える