問題タブ [listctrl]

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.

0 投票する
1 に答える
4265 参照

python - Python と wxpython で listctrl を使用してアイテムを並べ替える

3 列のリストで項目を並べ替えようとしていますが、うまくいきません。「テーブル」にデータを入力するように設定しました。プログラムを最初に実行すると、列は問題なくソートされます。ただし、別のデータ ソースを選択するオプションがあり、同じテーブルに新しいデータが入力されます (ほとんどの場合、3 番目の列が変更されます)。ただし、アイテムを並べ替えると、新しく表示されたデータではなく、元のデータに基づいて並べ替えられます。何か助けはありますか?

私のコード(不要な部分を削除):

繰り返しますが、3 列の「テーブル」はデータを適切に更新するため、問題はありません。唯一の問題は、列を並べ替えようとすると、テーブルの入力に使用された元の「adpdata」に基づいて常に並べ替えられることです。

何か案は?

編集:

dict の例を 2 つ示します。

Selection_A は、私が使用するデフォルトの辞書です。リストを作成すると、3 つの列を簡単に正しく並べ替えることができます (たとえば、列 3 は 1、2、3、4、5 の順序で表示されます。ただし、Selection_B に切り替えると、Selection_A の値に基づいて並べ替えられます (ただし、リストには Selection_B の値が表示されます) -- たとえば、列 3 には 3,5,1,2,4 が表示され、並べ替えられた列 1 には A,B,C,D,E が表示されます (1,2,3,4,5 およびC,D,A,E,B). これが役立つかどうかわかりません? データが多すぎるため、元の辞書を表示できません。

また、チェックしました-私のself.itemDataMapは適切に更新されます(結果を印刷しました)-並べ替えは行われません。「ソート」値が「保存/更新」されている場所が完全にはわからないと思いますか?

0 投票する
2 に答える
3744 参照

python - wxpython listctrl と列幅の修正

パネル内で「テーブル」の見栄えを良くしようとしています。私が抱えているこの問題は、テーブルがパネルを埋め尽くしているが、すべてが左側にあるということです。各列を同じサイズにして、パネルの幅全体に広げたいと思います。ListCtrlAutoWidthMixin を見たことがありますが、これをどのように利用できるかわかりません。これが私がコードに持っているものです:

繰り返しますが、テーブルはパネル全体にまたがっていますが、すべての列が左にシフトしています。また、列のサイズを手動で設定したくありません (パネルのサイズを取得して、列の数で割ることができない限り、プログラムは異なる解像度のコンピューターで使用されるため)。このアプローチを試しましたが、パネルの正しいサイズを取得できないようです。GetSize() と GetClientSize() で取得した数値はすべて小さすぎます。

助けてくれてありがとう!

編集:追加されたコード:

0 投票する
2 に答える
894 参照

python - ソート後にwxListCtrlで特定の行を削除する方法は?

アプリでライブ レポートに使用wx.ListCtrlしています。タスクの開始時に新しい行を挿入し、タスクの終了時に関連する行を削除するなど、ステータスが継続的に更新されます。リストは時々ソートされるため、最初に使用した行 ID で行を単純に削除することはできません。を使用して一意の ID を割り当てることができますがSetItemData、タスクが完了したときにどの行を削除するかを正確に知ることができますが、その一意の ID で行を削除する方法はなく、rowid を取得する方法さえありません一意のIDで、私が見つけた唯一の方法はGetItemData、特定の行の一意のIDを返す.

したがって、私の頭に浮かんだ唯一の方法は、すべての行を繰り返して一意の ID をチェックし、それを指定された ID と比較し、一致する場合はその行を削除することです。しかし、これはあまりにも不器用に聞こえるので、並べ替え後に特定の行を削除するより良い方法はありますか?