2012-07-03 17 views
5

Tengo un script largo-ish para hacer algunos análisis de datos, y tiene que conectarse a varias bases de datos. Una de las bases de datos tiende a actualizar mi contraseña con más frecuencia de lo que me gusta, así que me gustaría agregar una ventana emergente para que ingrese mi contraseña actual. Encontré este ejemplo pero no entendí lo suficiente para ver si devolvía mi valor cuando se descartaba el cuadro de diálogo. He pensado en lo define como una variable global (<<-) dentro de la función OnOK, pero esto parece desordenadoAgregue un cuadro de texto emergente dentro de un script R usando tcltk

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) 

Respuesta

4

Usted puede encontrar la función de ginputgWidgets envuelve lo que sugiere Greg nieve para usted:

require(gWidgets) 
options(guiToolkit="tcltk") 
NameVal <- ginput("Enter your passsword:") 

NameVal contendrá la cadena introducida o NA si se cancela.

4

Ha respondido a su propia pregunta: ¿que haces en realidad necesito <<- en estos ejemplos tcltk --- ver las diversas publicaciones de Peter a lo largo de los años, u otros ejemplos que flotan, otros paquetes de CRAN que utilizan, o incluso en el paquete en sí. Pruebe

library(tcltk) 
    demo("tkcanvas") 

y vea cómo se trata, p. lastX, lastY.

1

Puede usar las funciones tkwait.window o tkwait.variable. Use el código anterior para abrir la ventana, luego use una de las funciones de espera (tkwait.window). Detendrá el script hasta que se destruya la ventana, esencialmente cuando hace clic en Aceptar. Luego, cuando la secuencia de comandos proceda, tendrá su valor en la variable dentro de la secuencia de comandos/función y solo podrá usarla allí sin necesidad de asignar una variable global.

Cuestiones relacionadas