[英]gWidgets: How to save user's work in the application?
我一直在使用gWidgets在R中構建應用程序。 應用程序包括幾個可編輯的表格,工作表等-基本上像MS Excell一樣工作,但是有特殊用途。
當用戶保存已完成的工作並退出應用程序時,他/她應該能夠從他/她結束的地方繼續工作-例如單擊圖標或將“工作文檔”導入應用程序-這樣所有工作表和數據將被打開(再次類似於MS Excell等),並且與關閉應用程序時的狀態相同。
但是,我不知道該怎么做。 有人可以幫忙嗎?
這樣的一些模式應該起作用:
library(gWidgets2)
# Global variables
widgets <- list()
values <- NULL # or a list()
state <- NULL
## Layout GUI
w <- gwindow("Test")
g <- ggroup(cont=w)
g1 <- ggroup(horizontal=FALSE, cont=g)
save_btn <- gbutton("Save state", cont=g1)
restore_btn <- gbutton("restore state", cont=g1)
widgets$w1 = gedit("some text", cont=g)
nb = gnotebook(cont=g)
widgets$w2 = gradio(c("a","b","c"), label="radio", cont=nb)
widgets$w3 = gtable(mtcars[1:3,1:3], label="table", cont=nb)
# Save and restore actions
addHandlerClicked(save_btn, handler=function(...) {
values <<- lapply(widgets, svalue, index=TRUE)
state <<- lapply(widgets, "[")
})
addHandlerClicked(restore_btn, handler=function(...) {
if (!is.null(values)) {
for (nm in names(widgets)){
## screen for widgets without values
if (length(state[[nm]]))
widgets[[nm]] <- state[[nm]]
print(list(widgets[[nm]], values[[nm]]))
svalue(widgets[[nm]], index=TRUE) <- values[[nm]]
}
}
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.