R tcl tk:如何将变量传递给按钮命令?

R tcl tk:如何将变量传递给按钮命令?,r,tcl,tk,R,Tcl,Tk,如何在按钮的命令功能中传递num的值 f.frame <- tktoplevel() numIDs = 50; bs = list(); OnPress <- function (inum) { print (inum) } for (num in 1:numIDs) { bs[[num]] <- tkbutton (f.frame, command = "OnPress num"); tkpack (bs[[num]]); } f.frame创建一个返回无

如何在按钮的命令功能中传递
num
的值

f.frame <- tktoplevel()

numIDs = 50;
bs = list();
OnPress <- function (inum) { print (inum) }
for (num in 1:numIDs) {
    bs[[num]] <- tkbutton (f.frame, command = "OnPress num");
    tkpack (bs[[num]]);
}

f.frame创建一个返回无参数函数的工厂函数:

makepresser=function(n){force(n);function(){cat("Hit me ",n," times\n")}}
如果您以前没有见过,它可以让您执行以下操作:

> m1 = makepresser(1)
> m1()
Hit me  1  times
> m2 = makepresser(9)
> m2()
Hit me  9  times
那么它就简单到:

f.frame <- tktoplevel()
bs = list()
for(i in 1:10){
   bs[[i]]=tkbutton(f.frame,command=makepresser(i))
   tkpack(bs[[i]])
}

f.frame我认为实现这一点的唯一方法是创建一个列表(或环境),在其中填充不同的函数(每个按钮对应一个函数,它们作为形式参数的数量不同)。问题在于延迟计算:在按下按钮之前,R不会运行命令中指定的函数(或计算传递给它的任何参数)。不过,其他人可能知道更好的处理方法。