問題タブ [wxgrid]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - wxPython の wx.grid.Grid で GridCellAttr の使用を高速化できますか?
wx.grid.Grid
非常に大きな Microsoft Excel ドキュメントを処理する Windows アプリケーションを作成しています。現在、17 列と 12,000 行以上のファイルをすばやく開き、スムーズにスクロールできます。(これは、カスタム テーブル クラスのデータを操作する仮想テーブルです。)
とにかく、カスタム グリッド セル属性オブジェクトを使用すると問題が発生します。
行内のすべてのセルにカスタム グリッド セル属性が設定されると、グリッドのパフォーマンスは 99.9% 低下します。スムーズにスクロールする代わりに、3 秒ごとに 1 回再描画できればラッキーです。これらのインスタンスのほとんどをgrid.SetColAttr
代わりに使用して修正しました。これにより、パフォーマンスが以前の滑らかさに戻りましたが、それが機能しない場合が1 つあります。アプリケーションは、列内のすべてのセル (12,000 セル) を繰り返し処理し、データに対して何らかの処理を実行し、結果に基づいてカスタム グリッド セル属性を適用します。それが完了すると、グリッドは動作が遅くなり、悪夢のようになります。
この恐ろしいパフォーマンス ヒットを取り除き、カスタム セル属性を保持する方法はありますか? グリッドの内部の仕組みとそのセル属性を知っている人にとって、答えは非常に簡単だと思います。
ありがとう。
python - wxPython でグリッドのビューポートを制御するにはどうすればよいですか?
グリッド アプリケーションに検索機能を実装しようとしています。を使用してカーソルを移動できますSetGridCursor(self, row, col)
が、グリッドの「ビューポート」を新しいカーソル位置に移動する方法がわかりません。つまり、ユーザーが探しているセルにカーソルが移動した場合でも、ユーザーはカーソル セルが見つかるまで手動でスクロールする必要があります。
グリッド カーソルをビューポートの中央に配置できるように、プログラムでグリッドをスクロールするにはどうすればよいですか?
ランダムに、この質問を書いている間、私は Grid wiki ページに行き、「スクロール」という単語を検索して見つけました:
MakeCellVisible( int row, int col )
— 特定のセルを強制的に表示し、効果的にグリッドをスクロールして特定のセルに移動します
これで私の問題はほとんど解決します。セルをビューポートの中央に配置したいのですが、この関数はセルが画面の端に表示されるまでスクロールするだけです。カーソル位置にも影響せずに、グリッドのスクロール位置のみに影響する関数が見つかりません。考え?
python - wxPythonのGridSizeEventから新しい列サイズを取得することは可能ですか?
's列のwx.grid.Grid
サイズが変更されると、awx.grid.GridSizeEvent
が発行されます。ドキュメントとdir(event)
出力から、これはすべてのwxPythonの中で最も役に立たないクラスのようです。どうやら、列のサイズ変更に関する関連情報(どの列がサイズ変更されたか、以前はどのサイズで、現在はどのサイズであるか)はわかりません。
ペアのdictを維持し、{<column_index>: <column_size>}
各サイズ変更イベントのデータから関連データを手動で導出できると思いますが、何かを見逃しており、これは必要ないと思います。
GridSizeEvent
すべての列サイズを手動で追跡しなくても、どの列のサイズが変更されたかを確認することはできますか?
python - wx.Grid と wx.StockCursor
フレーム内に wx.Grid ウィジェットを作成しました。ユーザーがグリッド ウィジェットを使用している場合は、カーソルの種類を変更したいと考えています。私はそれを行うことができましたが、ユーザーがセルwx.StockCursor
と.SetCursor methods
行の境界線の交点の上にカーソルを移動すると、カーソルは標準のカーソルに戻り続けます。これは何が原因ですか?