Perl / Tkがスプレッドシートを消去しないのはなぜですか?
-
03-07-2019 - |
質問
[クロスがマハロの回答に再び投稿されました]
私の Perl / Tkスクリプトには、 Tk :: TableMatrixを使用して表示されるグリッドのような初期スプレッドシートがあります。 ::スプレッドシート
モジュール。私のスプレッドシートは、プログラム的に $ ss
と呼ばれます。この初期グリッドは、最初のスプレッドシートが表示される前に消去されます。
$ss->pack('forget');
現在のスクリプトは、 $ mw->も追加します。 pack( 'forget');
、しかしそれは必要ではない。
私の質問は、ファイルから2番目のファイルを開く方法です-> [開く] ダイアログボックスで、最初のファイルが初期グリッドを消去するように、最初に表示されたファイルを消去しますか?現在、2番目のファイルは、まだ表示されている最初のスプレッドシートの下に完全に新しいフレームとして表示されます。
事前に助けてくれてありがとう。
解決
" pack( 'forget')"ビューからウィジェットを削除するだけです。それを削除したり、その中に表示されたデータに対して何もしません。ウィジェットの破棄に失敗すると、スプレッドシートウィジェットを作成するにつれて、実質的に大きなメモリリークが発生します。
問題の最も迅速な解決策は、古いメソッドを破棄し(destroyメソッドを使用)、新しいデータで再作成することです。別の解決策は、ウィジェットを保持しながら、deleteRows()を使用して既存のデータをすべて削除してから、新しいファイルのデータを挿入することです。
所属していません StackOverflow