gtable(来自R package gWidgets2)返回先前的选择

时间:2017-07-19 06:57:41

标签: r gwidgets

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

编辑:看起来它使用gWidgets按预期工作,因此它可能是gWidgets2中的一个错误。开始新的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

1 个答案:

答案 0 :(得分:0)

@jverzani在GitHub上发表回复https://github.com/jverzani/gWidgets2/issues/94#issuecomment-316739581

  

对不起,我在这里没有很好的解决方案。我以为我做了,但不能   想办法。问题是之前调用了gWidgets2观察者   小部件已更新。我认为以不同方式对待处理程序   会工作,但......

     

解决方法是不以这种方式连接,而是使用   addHandlerSelectionChanged这可以提供单击和键盘   响应,但双击不能很好地发挥作用。或者,   双击应该&#34;激活&#34;单元启动回调,   所以不能分配给点击处理程序,只需分配即可   更改处理程序为您提供双击和键盘选择,   但不是单击,只是设置选择但不是   发起回调。

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