簡體   English   中英

gtable(來自R包gWidgets2)返回先前的選擇

[英]gtable (from R package gWidgets2) returns previous selection

單擊新值時,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(內部版本7601)Service Pack 1程序包:gWidgets2_1.0-7,gWidgets2RGtk2_1 .0-6,RGtk2_2.20.33

@jverzani在GitHub上的回答https://github.com/jverzani/gWidgets2/issues/94#issuecomment-316739581

抱歉,我這里沒有好的解決方案。 我以為我做到了,但無法解決。 問題是在小部件更新之前調用了gWidgets2觀察器。 我認為以不同的方式分階段處理程序會起作用,但是...

解決方法是不以這種方式連接,而是使用addHandlerSelectionChanged這會產生單擊和鍵盤響應,但雙擊時效果不佳。 另外,雙擊應該“激活”啟動回調的單元格,因此不可能分配給單擊處理程序,而僅分配給更改處理程序會給您提供雙擊和鍵盤選擇,而不能給您提供選擇的單擊功能但不會啟動回調。

它似乎在我的應用程序中按預期工作。 我在一個地方只使用addHandlerChanged ,而在另一地方只使用addHandlerSelectionChanged

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM