2012-10-12 88 views
0

在下面的小工具中,是否可以更改「無線電」組的標籤位置。我想,而不是具有上述項目的「類型」這樣的事情:小工具中標籤的位置

Type  o Quantitative 
      o Qualitative 

enter image description here

win <- gwindow("Empirical Phase Diagram") 

BigDataGroup <- ggroup(cont=win) 
DataGroup <- gframe("Data", container = BigDataGroup, horizontal=FALSE) 

grp.file <- ggroup(horizontal=FALSE, container = DataGroup) 
lbl.file <- glabel("File: ", container = grp.file) 
browse.file <- gfilebrowse(container = grp.file) 

Input1Group <- gframe("First input variable ", container = DataGroup, horizontal=FALSE) 
grp.text.input1 <- ggroup(horizontal=FALSE, container = Input1Group) 
lbl.text.input1 <- glabel("Column index", container = grp.text.input1) 
insert.text.input1 <- gedit(text="A", container = grp.text.input1) 
grp.type.input1 <- ggroup(horizontal=FALSE, container = Input1Group) 
#addSpring(grp.type.input1) 
lbl.type.input1 <- glabel("Type ", container = grp.type.input1) 
insert.type.input1 <- gradio(items=c("Quantitative", "Qualitative"), container = grp.type.input1) 

Input2Group <- gframe("Second input variable ", container = DataGroup, horizontal=FALSE) 
grp.text.input2 <- ggroup(horizontal=FALSE, container = Input2Group) 
lbl.text.input2 <- glabel("Column index", container = grp.text.input2) 
insert.text.input2 <- gedit(text="B", container = grp.text.input2) 
grp.type.input2 <- ggroup(horizontal=FALSE, container = Input2Group) 
lbl.type.input2 <- glabel("Type ", container = grp.type.input2) 
insert.type.input2 <- gradio(items=c("Quantitative", "Qualitative"), container = grp.type.input2) 

grp.text.output <- ggroup(horizontal=FALSE, container = DataGroup) 
lbl.text.output <- glabel("Output variable range ", container = grp.text.output) 
insert.text.output <- gedit(initial.msg="type a range e.g. C:AD", container = grp.text.output) 

OptionsGroup <- ggroup(horizontal=FALSE, container = BigDataGroup) 
grp.colorspace <- ggroup(horizontal=FALSE, container = OptionsGroup) 
insert.colorspace <- gradio(items=c("RGB", "LAB", "LUV")) 
lbl.colorspace <- gframe("Color space ", container = grp.colorspace) 
add(lbl.colorspace, insert.colorspace) 

GoGroup <- ggroup(horizontal=FALSE, container = BigDataGroup) 
addSpring(GoGroup) 
read <- gbutton(text="Go", container = GoGroup, 
    handler = function(h, ...) { 
    print(EPD(filename=svalue(browse.file), 
     input1=svalue(insert.text.input1), 
     input2=svalue(insert.text.input2), 
     outputs=svalue(insert.text.output), 
     color.space=svalue(insert.colorspace)) 
     ) 
    } 
) 

回答

2

兩件事情:

gWidgets可以使用glayout容器上扣帽子左邊。例如:

tbl <- glayout(cont=parent_container) 
tbl[1,1] <- "Type" ## or glabel("Type ", container = tbl) 
tbl[1,2] <- (insert.type.input1 <- gradio(items=c("Quantitative", "Qualitative"), container = tbl)) 

後者的雙重任務使您能夠訪問無線電部件。你也可以用tbl [1,2]獲得這個。這工作正常,但您需要爲行索引做一些簿記。

gWidgets2(在github上只有現在)也有個gformlayout容器,這使得這更容易:

flyt <- gformlayout(cont=parent_container) 
insert.type.input1 <- gradio(items=c("Quantitative", "Qualitative"), 
    horizontal=FALSE, 
    label = "Type", container = flyt) 

順便說一句,如果你正在使用gWidgets2RGtk2可以修改此標籤的字體,但這是超級哈克。例如: -

get_labels <- function(fl) { 
    children <- Map(function(x) x$getWidget(), fl$widget$getChildren()) 
    labels <- Filter(function(x) is(x, "GtkLabel"), children) 
    names(labels) <- sapply(labels, function(x) x$getText()) 
    labels 
} 

## Then to set the font of a label you can do: 
labels <- get_labels(flyt) 
flyt$set_rgtk2_font(labels[["Type"]], list(weight="bold")) 

而且,如果你還在使用tcltk,這個功能應該工作:

set_formlayout_font <- function(fl, value, row) { 
    l = tcl("grid", "slaves", fl$widget, row=row-1, column=0) 
    fl$set_font_ttk(value, l) 
} 
set_formlayout_font(fl, list(color="blue"), 2) ## 2nd row 
+0

你好@jverzani。我現在正在使用'gWidgets2'。有沒有辦法控制'gformlayout'中的標籤風格,類似於我們通過使用'font()'到'glabel'的方式? –

+0

對不起,除了'align'參數外沒有任何東西。甚至沒有一種方便的方式來獲取底層標籤小部件。我將添加到我的答案與GTK2如何做到這一點。 – jverzani

+0

謝謝。我總是使用RGtk2(我不知道爲什麼)。我想在'gformlayout'中控制每個標籤的樣式。我很快會嘗試你的建議。如果這太複雜,那麼我會使用'glayout'和'glabel'。 –