2

我正在构建我的第一个 GUI,我希望它从旋转按钮和文本框中获取基本的数字输入,并使用这些值填充数据框,然后在最后按下按钮将它们插入到某个函数中。但是,我无法弄清楚它的连接部分。我有一个窗口可以准确地查看我想要的方式,并且我已将所有旋转按钮校准为具有理想的默认值并增加正确的增量数,但是我无法将其传递给我的模型. 我已经预先分配了一个数据框,然后我想为数据框中的每个元素分配特定的值,并使用来自文本框的输入来命名列。到目前为止,我尝试简单地分配它们但没有成功。一世' 我还尝试将它们设为全局变量,然后最后将它们放入数据框中,但也没有运气。我确定我在gSignalConnect()命令,但我无法弄清楚。下面给出了一个文本框和一个旋转按钮的代码,以及我的“计算”按钮的代码(colMeans()为了空间,我已经替换了我的函数)。

df <- data.frame(matrix(nrow=8,ncol=5))
library(RGtk2)
window <- gtkWindow()
window["title"]<- "My First GUI"

# Add a frame
frame <- gtkFrameNew("Input")
window$add(frame)

# Create vertical container for file name entry
vbox<- gtkVBoxNew(FALSE, 9)
frame$add(vbox)

# Add horizontal container for every widget line
hbox<-gtkHBoxNew(FALSE, 4)
vbox$packStart(hbox, FALSE, TRUE)
label <- gtkLabelNewWithMnemonic("Dataframe Column 1          ")
hbox$packStart(label,FALSE,TRUE)

# Add a text box that allows the user to name Dataframe Column1
col1nameLAB<-gtkLabel('Name: ')
col1name<-gtkEntryNew()
col1name$setWidthChars(20)
hbox$PackStart(col1nameLAB)
hbox$PackStart(col1name,FALSE,TRUE)
gSignalConnect (col1name,"value-changed",function (entry) {
names(df)[1] <- (entry$getText()}))

# Add a spin button for a numerical value that will eventually be the first value in Column 1 of the dataframe
col1valLAB <- gtkLabel("Integer Value: ")
col1valADJ <- gtkAdjustment(30,1,100,1)
col1valSB <- gtkSpinButton(col1valADJ,1,0)
gtkSpinButtonSetValue(col1valSB, 30)
hbox$PackStart(col1valLAB)
hbox$PackStart(col1valSB)
gSignalConnect (col1valSB,"value-changed",function (entry) {
df[1,1]<-entry$getValue()})

# Add a button to recalculate the model
hbox = gtkHBoxNew(FALSE,1)
vbox$packStart(hbox, FALSE, FALSE, 0)
button <- gtkButtonNew ( )
button$setLabel ( "Calculate" )
hbox$ packStart ( button )

# Now specify what happens when button is clicked:
gSignalConnect (button, "clicked",
f<-function( widget) {
  colmeans(df)
} )
4

1 回答 1

1

这行得通,不确定什么不适合您:

library(RGtk2)

df <- data.frame(a=1)

w <- gtkWindow()

col1valADJ <- gtkAdjustment(30,1,100,1)
col1valSB <- gtkSpinButton(col1valADJ,1,0)
w$add(col1valSB)

gSignalConnect(col1valSB, "value-changed", function(entry, ...) {
  val <- entry$getValue()
  message("Change to ", val)
  names(df)[1] <<- val
})
于 2012-09-24T18:30:29.240 回答