使用R包tcltk
创建GUI时,将子窗口小部件添加到父窗口的env
变量中存储的父窗口环境中,似乎是best practice。克。
library(tcltk)
win2 <- tktoplevel()
win2$env$butOK <- ttkbutton(win2, text = "OK", command = function() { tkdestroy(win2) })
tkgrid(win2$env$butOK, padx = 70, pady = 30)
“以避免全局环境中[tk widget相关]变量的膨胀”绝对正确,但我可以在不使用env
<的情况下获得相同的结果 / strong>但直接将子窗口小部件存储为父窗口的变量。在我看来,这是一种更自然的OO风格,并提高了可读性:
win3 <- tktoplevel()
win3$butOK <- ttkbutton(win3, text = "OK", command = function() { tkdestroy(win3) })
tkgrid(win3$butOK, padx = 70, pady = 30)
问题:是否有充分的理由选择使用env
变量的第一个版本?