R gWidgets+tcltk-创建简单窗口将返回一个错误

R gWidgets+tcltk-创建简单窗口将返回一个错误,r,gwidgets,R,Gwidgets,我正在尝试制作一个小型GUI,使其他人更容易运行脚本。 我正在Windows机器上使用gWidgets和tcltk 我创建了一个简单的窗口,如下所示: require(gWidgets) require(gWidgetstcltk) options(guiToolkit="tcltk") win <- gwindow(title="This is a window!") grp <- ggroup(container=win) lbl <- glabel("Here you

我正在尝试制作一个小型GUI,使其他人更容易运行脚本。 我正在Windows机器上使用gWidgets和tcltk

我创建了一个简单的窗口,如下所示:

require(gWidgets)
require(gWidgetstcltk)

options(guiToolkit="tcltk")
win <- gwindow(title="This is a window!")
grp <- ggroup(container=win)
lbl <- glabel("Here you can write stuff:", container=grp)
txt <- gedit(text="Stuff", container=grp)
如果在出现错误后重新运行,则会得到以下结果:

<simpleError in envRefInferField(x, what, getClass(class(x)), selfEnv): ‘no_items’ is
not a valid field or method name for reference class “Entry”>

那个代码片段对我来说很好。gwidget基于S4类,而不是引用类。您确定这是导致错误的原因吗?还有,回溯告诉你什么?起初我在RStudio中做这个,在那里我看到了问题。在RGui中,我没有得到错误。所以我想这是RStudio中的一些问题。我将用回溯信息编辑帖子。这个问题也可能是由使用引起的,你能不能仔细检查一下你没有使用gWidgets2,它在RStudio中使用引用类。我猜这是RStudio的问题。我无法从终端复制它。RStudio和Tk存在潜在的eventloop冲突,这可能会带来麻烦。不确定这个特定的错误来自哪里。正如Richie所指出的,我仍然需要在CRAN上发布gWidgets2的重写。
<simpleError in envRefInferField(x, what, getClass(class(x)), selfEnv): ‘no_items’ is
not a valid field or method name for reference class “Entry”>
> traceback()
11: stop(gettextf("%s is not a valid field or method name for reference class %s", 
        sQuote(field), dQuote(thisClass@className)), domain = NA)
10: envRefInferField(x, what, getClass(class(x)), selfEnv)
9: r5_widget$no_items
8: r5_widget$no_items
7: .length(x@widget, x@toolkit)
6: .length(x@widget, x@toolkit)
5: FUN(X[[3L]], ...)
4: FUN(X[[3L]], ...)
3: lapply(X = X, FUN = FUN, ...)
2: sapply(globalValues, length, USE.NAMES = FALSE) at SessionWorkspace.R#166
1: (function () 
   {
       globals = ls(envir = globalenv())
       globalValues = lapply(globals, function(name) {
           get(name, envir = globalenv(), inherits = FALSE)
       })
       types = sapply(globalValues, .rs.getSingleClass, USE.NAMES = FALSE)
       lengths = sapply(globalValues, length, USE.NAMES = FALSE)
       values = sapply(globalValues, .rs.valueAsString, USE.NAMES = FALSE)
       extra = sapply(globalValues, .rs.valueDescription, USE.NAMES = FALSE)
       result = list(name = globals, type = types, len = lengths, 
           value = values, extra = extra)
       result
   })()