簡體   English   中英

gWidgets:如何在應用程序中保存用戶的工作?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM