我正在尝试开发一个小部件,我可以在一个对话框中输入一个数字,然后将该数字保存到我的工作区以供以后进一步使用,但是我是R的新手并且在检索后输入文本时遇到问题被输入到小部件中。我找到了一些关于如何将信息从一个窗口小部件传递到另一个窗口小部件而不是返回工作区的线程。我让它工作的唯一方法是将代码运行到倒数第二行并分别手动运行最后一行。任何人都可以帮我吗???
# clearing workspace
rm(list = ls())
# Loading packages
library(gWidgets)
library(gWidgetstcltk)
# Setting up Widget
win=gwindow(title='Experiment setup',visible = TRUE)
grp_name <- ggroup(container = win)
okbut<-ggroup(container = win)
lbl_data_frame_name <- glabel(
'Choose number of indexing variables: ',
container = grp_name
)
#Asking user for input
obj<-gedit(container=grp_name,handler=function(h,..){
print(as.integer(svalue(h$obj)))
}, action = dispose(win))
#Attempt to return text from user input to workspace
textfromgedit=svalue(obj)
答案 0 :(得分:0)
这样的事情有帮助吗?
library(gWidgets2)
results <- new.env()
win <- gwindow("Save number")
gp <- gformlayout(container=win)
gedit("", container=gp, label="Number of variables",
coerce.with=as.numeric, handler=function(h,...) {
results$values <- svalue(h$obj)
})
如果没有一些技巧,处理程序中的赋值将分配给程序其余部分不可见的范围。在上面,环境用于分配。此任务也可以使用<<-
赋值运算符。
我还使用gformlayout
来更好地整理您的小部件。它与gWidgets2
一起提供,我推荐使用它代替较旧的gWidgets
。