2017-07-19 45 views
0

R中gWidgets2包中的gtable小部件在單擊新值時返回之前選定的值。如果使用鍵盤箭頭選擇一個值,然後按Enter鍵以激活當前選擇。這對我來說是意想不到的行爲。如果這是通過設計應該如何工作的,那麼如何在兩種情況下獲得當前的選擇?gtable(來自R包gWidgets2)返回上一個選擇

編輯:它看起來像它使用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年6月30日),平臺:x86_64的-W64-的mingw32/64(64位),下運行:視窗7 64(建立7601)服務包1 包:gWidgets2_1.0-7,gWidgets2RGtk2_1.0-6,RGtk2_2.20.33

回答

0

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

對不起,我沒有一個很好的解決方案在這裏。我以爲我做了,但不能 搞清楚了。問題是gWidgets2觀察者在更新小部件之前調用 。我認爲分期處理不同 會的工作,但...

的解決辦法是不是這樣連接,而是使用 addHandlerSelectionChanged這給單一的點擊和鍵盤 反應,但不與雙發揮很好單擊。或者, 雙擊應該「激活」啓動回調的單元格, 因此不能指定給點擊處理程序是可能的,只是將 分配給更改處理程序會讓您雙擊並選擇鍵盤,但不是單擊,而是隻是設置選擇,但不會 發起回調。

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

相關問題