Как вы даете функциональность 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 = "" )
}