2017-07-19 1 views
0

RのgWidgets2パッケージのgtableウィジェットは、新しい値をクリックすると以前に選択された値を返します。キーボードの矢印を使用して値を選択し、Enterを押して現在の選択をアクティブにする場合は、戻ります。これは私にとっては予期せぬ動作でした。これが設計上どのように機能するのかは、どちらの場合でもどのように現在の選択を得ることができますか?gtable(RパッケージのgWidgets2から)は前の選択を返します

EDIT: 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/x64(64ビット)、下の実行:Windows 7のx64のを(ビルド7601)のService Pack 1 パッケージ:gWidgets2_1.0-7、gWidgets2RGtk2_1.0-6、RGtk2_2.20.33

答えて

0

GitHubのhttps://github.com/jverzani/gWidgets2/issues/94#issuecomment-316739581

上@jverzaniによって回答は申し訳ありませんが、私はここで良い解決策を持っていません。私は思ったが、 を見つけられない。問題は、 のウィジェットが更新される前にgWidgets2オブザーバが呼び出されることです。私は、これはシングルクリックとキーボード 応答が得られますが、ダブルとうまく再生されない問題を回避するには、この方法で接続しないようにすることではなく、 addHandlerSelectionChangedを使用することになり

異なりハンドラをステージングすることは働くだろうと思ったが、...クリック。代わりに、 ダブルクリックは、コールバックを開始するセルを「アクティブにする」と仮定されます。 クリックハンドラに割り当てられないようにして、 を変更ハンドラに割り当てると、ダブルクリックとキーボードの選択 選択だけを設定しますが、 はコールバックを開始しません。

私のアプリケーションでは正常に動作するようです。私は1つの場所でaddHandlerChangedを使用し、別の場所ではaddHandlerSelectionChangedのみを使用します。

関連する問題