使用tcltk在R脚本中添加弹出文本框

Pau*_*yuk 5 tk-toolkit r

我有一个很长的脚本来做一些数据分析,它必须连接到几个数据库.其中一个数据库往往比我更频繁地更新我的密码,所以我想为我添加一个弹出框来输入我当前的密码.我找到了这个例子,但是当对话框被解除时,不明白tcltk看到hwo返回我的值.我曾想过将它定义为<<-OnOK函数中的全局变量(),但这看起来很混乱

require(tcltk)
tt<-tktoplevel()
Name <- tclVar("Password")
entry.Name <-tkentry(tt,width="20",textvariable=Name)
tkgrid(tklabel(tt,text="Enter Password"))
tkgrid(entry.Name)
OnOK <- function()
{
    NameVal <- tclvalue(Name)
    tkdestroy(tt)
}
OK.but <-tkbutton(tt,text="   OK   ",command=OnOK)
tkbind(entry.Name, "<Return>",OnOK)
tkgrid(OK.but)
tkfocus(tt)
Run Code Online (Sandbox Code Playgroud)

jve*_*ani 4

您可能会发现Greg Snow 为您建议ginputgWidgets包装功能:

require(gWidgets)
options(guiToolkit="tcltk") 
NameVal <- ginput("Enter your passsword:")
Run Code Online (Sandbox Code Playgroud)

NameVal将包含输入的字符串或者NA如果您取消。