我有一个很长的脚本来做一些数据分析,它必须连接到几个数据库.其中一个数据库往往比我更频繁地更新我的密码,所以我想为我添加一个弹出框来输入我当前的密码.我找到了这个例子,但是当对话框被解除时,不明白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)
您可能会发现Greg Snow 为您建议ginput的gWidgets包装功能:
require(gWidgets)
options(guiToolkit="tcltk")
NameVal <- ginput("Enter your passsword:")
Run Code Online (Sandbox Code Playgroud)
NameVal将包含输入的字符串或者NA如果您取消。