Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R with tcltk:为什么我应该向parents env(环境)变量添加小部件?_R_User Interface_Tk - Fatal编程技术网

R with tcltk:为什么我应该向parents env(环境)变量添加小部件?

R with tcltk:为什么我应该向parents env(环境)变量添加小部件?,r,user-interface,tk,R,User Interface,Tk,当使用R包tcltk创建gui时,将子窗口小部件添加到父级环境(存储在父级的env变量中)似乎是一个很好的选择。g library(tcltk) win2 <- tktoplevel() win2$env$butOK <- ttkbutton(win2, text = "OK", command = function() { tkdestroy(win2) }) tkgrid(win2$env$butOK, padx = 70, pady = 30) 问题:是否有充分的理由选择使用

当使用R包
tcltk
创建gui时,将子窗口小部件添加到父级环境(存储在父级的
env
变量中)似乎是一个很好的选择。g

library(tcltk)
win2 <- tktoplevel()
win2$env$butOK <- ttkbutton(win2, text = "OK", command = function() { tkdestroy(win2) })
tkgrid(win2$env$butOK, padx = 70, pady = 30)
问题:是否有充分的理由选择使用
env
变量的第一个版本?


PS:M.Lawrence和J.Verzani在他们的巨著《在R中编程图形用户界面》(2012)中展示了一种更加复杂(面向对象)的方法,将小部件和状态变量封装在一个引用类中(参见第19.2章),但这会产生比我需要的多得多的代码,并增加复杂性(当然也要解决其他问题-我不必解决-例如,在回调函数中查找状态变量)

我认为向env变量添加小部件可以避免复制父对象(R的COW priciniple),但事实并非如此:
>库(tcltk)>库(pryr)#对于mem tracing>win2 address(win2)[1]“0x3fdaff0”>win2$env$butOK address(win2)[1]“0x35e82c8”
我仍在寻找答案。我认为向env变量添加小部件可以避免复制父对象(R的COW priciniple),但事实并非如此:
>library(tcltk)>library(pryr)#对于mem tracing>win2 address(win2)[1]“0x3fdaff0”>win2$env$butOK address(win2)[1]“0x35e82c8”
我仍在寻找答案。
win3 <- tktoplevel()
win3$butOK <- ttkbutton(win3, text = "OK", command = function() { tkdestroy(win3) })
tkgrid(win3$butOK, padx = 70, pady = 30)