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
答案 0 :(得分:0)
@jverzani在GitHub上发表回复https://github.com/jverzani/gWidgets2/issues/94#issuecomment-316739581
对不起,我在这里没有很好的解决方案。我以为我做了,但不能 想办法。问题是之前调用了gWidgets2观察者 小部件已更新。我认为以不同方式对待处理程序 会工作,但......
解决方法是不以这种方式连接,而是使用
addHandlerSelectionChanged
这可以提供单击和键盘 响应,但双击不能很好地发挥作用。或者, 双击应该&#34;激活&#34;单元启动回调, 所以不能分配给点击处理程序,只需分配即可 更改处理程序为您提供双击和键盘选择, 但不是单击,只是设置选择但不是 发起回调。
它似乎在我的应用程序中按预期工作。我在一个地方只使用addHandlerChanged
而在另一个地方只使用addHandlerSelectionChanged
。