2016-08-18 9 views
0

私は多くの項目(行)を持つリストボックスを持っています。各項目の背景色は、$my_listbox itemconfigure my_index -background some_colorで設定できます。すべての項目を繰り返し処理するのではなく、一度にすべての項目の背景をリセットするオプションはありますか?現在のところ、それは私がないあなたの場合を除き、リストボックス内のアイテムの背景を変更することに長いを取るべきではないのWindows7のTkに8.5.14Tcl/Tkリストボックスはすべてのアイテムの背景を設定します

+0

バージョンとプラットフォームは何ですか? –

答えて

1

を実行しているよ...

非常に時間のかかる作業でありますリストボックスであまりにも多くの項目のいずれかを持っている(それは無限にスケールしない、ほとんどのGUI要素のような)か、アイテムの背景を設定するには、各呼び出しの間(おそらくupdateまたはupdate idletasksを行うことによって)イベントループを実行しています。これは、Tkが通常、ウィジェットがコールバックの実行中に忙しくなくなるまでウィジェットを再描画することを延期し、再描画が一度に起こるように見せかけるためです。アイテムの再構成はすべてメモリ内のレコードを設定して、後で再描画をスケジュールします(パイプラインにまだレコードがない場合)。これは本当に速いです。それは現在のデスクトップやモバイルシステムよりもずっと遅いマシン上で高速になるように設計されています。

リストボックスは、大部分(挿入、削除および検索を除いて、しかし、それらは、特殊なケースである)グループ操作をサポートしていません。

根本的な問題は、あなたがあまりにも多くの項目を入れているということである場合は、別のウィジェットに切り替える必要があります。たとえば、非常に長い行を使用しない(またはワードラップをオフにする)なら、textウィジェットのスケーラビリティが向上します。また、名前付きタグのシステムを使用して再構成する方法について、より洗練されたモデルをサポートしています。

+0

'update'を削除すると、この問題が解決されます。ありがとう! –

関連する問題