gtable(来自R包gWidgets2)返回以前的选择

gtable(来自R包gWidgets2)返回以前的选择,r,gwidgets,R,Gwidgets,R中gWidgets2包中的gtable小部件在单击新值时返回先前选择的值。如果使用键盘箭头选择值,然后按Enter键激活,则返回当前选择。这对我来说是出乎意料的行为。如果这是设计上的工作方式,那么在这两种情况下,我如何获得当前选择 编辑:使用gWidgets时,它看起来像预期的那样工作,所以它可能是gWidgets2中的一个bug。启动一个新的R会话,并在下面的示例中更改为gWidgets2->gWidgets和gvbox->ggroup require(gWidgets2) # Selec

R中gWidgets2包中的gtable小部件在单击新值时返回先前选择的值。如果使用键盘箭头选择值,然后按Enter键激活,则返回当前选择。这对我来说是出乎意料的行为。如果这是设计上的工作方式,那么在这两种情况下,我如何获得当前选择

编辑:使用gWidgets时,它看起来像预期的那样工作,所以它可能是gWidgets2中的一个bug。启动一个新的R会话,并在下面的示例中更改为gWidgets2->gWidgets和gvbox->ggroup

require(gWidgets2)

# Select by clicking (Clicked) or hit Enter (Changed)
# Move using mouse or arrow keys.

# Create the example (adopted from the gtable example)
w <- gwindow("gtable example", visible=FALSE)
g <- gvbox(cont=w)
tbl <- gtable(mtcars, cont=g, expand=TRUE, fill=TRUE)

addHandlerClicked(tbl, handler = function(h, ...) {

  print("Clicked returns the previously selected value.")

  print(svalue(tbl))

} )

addHandlerChanged(tbl, handler = function(h, ...) {

  print("Changed returns the currently selected value.")

  print(svalue(tbl))

} )

visible(w) <- TRUE
R版本3.4.1 2017-06-30,平台:x86_64-w64-mingw32/x64 64位,运行于:Windows 7 x64 build 7601 Service Pack 1下
套餐:gWidgets2_1.0-7、gWidgets2RGtk2_1.0-6、RGtk2_2.20.33

对不起,我这里没有好的解决办法。我以为我做了,但做不到 把它弄明白。问题是之前调用了gWidgets2观察器 小部件已更新。我认为不同的处理方式 会有用的,但是

解决方法是不以这种方式连接,而是使用 addHandlerSelectionChanged这提供了单击和键盘操作 响应,但双击效果不佳。或者, 双击应激活启动回调的单元格, 因此,不分配给单击处理程序是可能的,只分配 对于更改处理程序,您可以双击并使用键盘进行选择, 但不是单击,它只是设置选择,而不是 启动回调

在我的应用程序中,它似乎像预期的那样工作。我只在一个地方使用addHandlerChanged,在另一个地方使用addHandlerSelectionChanged