2

私は最初の GUI を作成しています。スピン ボタンとテキスト ボックスから基本的な数値入力を受け取り、これらの値をデータフレームに入力し、最後にボタンを押すだけでそれらを何らかの関数に接続したいと考えています。ただし、接続部分を理解するのに苦労しています。ウィンドウが希望通りに表示され、すべてのスピン ボタンが適切なデフォルト値に調整され、適切な増分値で増加するようになりましたが、それをモデルに渡すのに問題があります。 . データフレームを事前に割り当ててから、データフレームの各要素に特定の値を割り当て、テキスト ボックスからの入力を使用して列に名前を付けたいと考えています。私は単純にそれらを割り当てようとしましたが、これまでのところ成功していません。私' また、それらをグローバル変数にしてから、最後にデータフレームに入れようとしましたが、運もありませんでした。私は何かが欠けていると確信していますgSignalConnect()コマンドですが、わかりません。1 つのテキスト ボックスと 1 つのスピン ボタンのコードと、[計算] ボタンのコードを以下に示します (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 に答える