Как вы даете функциональность gWidget и как использовать ввод пользователя в "gedit"?

`win <- gwindow(title = "Analysing PDB structures", visible=TRUE, name=title,
           width = NULL, height = NULL, parent=NULL)
group <- ggroup(horizontal = FALSE, container=win)
obj <- glabel("Type your PDB code here:", container = group)
obj <- gedit("", container=group)
obj <- gbutton("Go", container = group)`

Когда пользователь вводит значение в gedit и нажимает кнопку "Go", как вы можете получить последующий код (например, install.packages(bio3d)) для автоматического запуска?

РЕДАКТИРОВАТЬ: В ответ на пост мне удалось поработать функциональность, спасибо. Как я могу использовать ввод, данный пользователем в "gedit" в obj2 в obj3? Что я делаю неправильно?

win <- gwindow(title = "Analysing PDB structures", 
           visible=TRUE, name=title,
           width = NULL, height = NULL, parent=NULL)
group <- ggroup(horizontal = FALSE, container=win)
obj1 <- glabel("Type your PDB code here:", container = group)
innergroup <- ggroup(container = group)
obj2 <- gedit((file1<-""), container=innergroup)
obj3<-addHandlerChanged(obj2, handler=function(...){
  gbutton( "Go", container = innergroup, 
       handler = function( h, ... ) {
         gmessage( svalue( obj2 ), title = (pdb<- read.pdb(file1)))
       } )
 })

1 ответ

Решение

Просто добавьте обработчик:

win <- gwindow( title = "Analysing PDB structures", 
                visible=TRUE, name=title,
                width = NULL, height = NULL, parent=NULL)
group <- ggroup( horizontal = FALSE, container=win )
obj1 <- glabel( "Type your PDB code here:", container = group )
obj2 <- gedit( "", container = group )
obj3 <- gbutton( "Go", container = group, 
                handler = function( h, ... ) {
    gmessage( svalue( obj2 ), title = "" )
} )

Поместите ваш код вместо gmessage()или определите свою функцию раньше и просто обратитесь к ней по имени: handler = foo, Эта функция должна быть определена следующим образом:

foo <- function( h, ... )
{ 
    gmessage( svalue( obj2 ), title = "" )
}
Другие вопросы по тегам