如何在按钮的命令功能中传递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]]);
}
答案 0 :(得分:5)
创建一个返回无参数函数的工厂函数:
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]])
}
工厂函数创建一个没有参数的函数 closure ,它在构造时保留n
的值(这里需要force
函数或者你被它咬了懒惰的评价)。