3
我用這裏的代碼:http://www.sciviews.org/_rgui/tcltk/Radiobuttons.html問一個用戶問題。如何在使用tcltk單選按鈕時停止R?
但是R不會等待用戶響應 - 代碼會繼續運行,因此任何後續嘗試使用響應的代碼都會丟失。
這裏是我的完整代碼,我想將testVal存儲起來(這是答案)。
require(tcltk)
tt <- tktoplevel()
rb1 <- tkradiobutton(tt)
rb2 <- tkradiobutton(tt)
rb3 <- tkradiobutton(tt)
rb4 <- tkradiobutton(tt)
rb5 <- tkradiobutton(tt)
rbValue <- tclVar(NA)
tkconfigure(rb1,variable=rbValue,value=1)
tkconfigure(rb2,variable=rbValue,value=2)
tkconfigure(rb3,variable=rbValue,value=3)
tkconfigure(rb4,variable=rbValue,value=4)
tkconfigure(rb5,variable=rbValue,value=5)
tkgrid(tklabel(tt,text="What's your answer?"))
tkgrid(tklabel(tt,text="1"),rb1)
tkgrid(tklabel(tt,text="2"),rb2)
tkgrid(tklabel(tt,text="3"),rb3)
tkgrid(tklabel(tt,text="4"),rb4)
tkgrid(tklabel(tt,text="5"),rb5)
testVal <- NA
OnOK <- function()
{
rbVal <- tclvalue(rbValue)
tkdestroy(tt)
testVal <<- rbVal
print(rbVal)
#return(rbVal)
}
OK.but <- tkbutton(tt,text="OK",command=OnOK)
tkgrid(OK.but)
tkfocus(tt)
cat(testVal)
有一個簡單的(和愚蠢的)解決方案:在cat(testVal)之前添加'repeat if(!is.na(testVal))break' ... – 2013-05-07 18:52:37