質問

[クロスがマハロの回答に再び投稿されました]

私の Perl / Tkスクリプトには、 Tk :: TableMatrixを使用して表示されるグリッドのような初期スプレッドシートがあります。 ::スプレッドシートモジュール。私のスプレッドシートは、プログラム的に $ ss と呼ばれます。この初期グリッドは、最初のスプレッドシートが表示される前に消去されます。

$ss->pack('forget');

現在のスクリプトは、 $ mw->も追加します。 pack( 'forget'); 、しかしそれは必要ではない。

私の質問は、ファイルから2番目のファイルを開く方法です-> [開く] ダイアログボックスで、最初のファイルが初期グリッドを消去するように、最初に表示されたファイルを消去しますか?現在、2番目のファイルは、まだ表示されている最初のスプレッドシートの下に完全に新しいフレームとして表示されます。

事前に助けてくれてありがとう。

役に立ちましたか?

解決

" pack( 'forget')"ビューからウィジェットを削除するだけです。それを削除したり、その中に表示されたデータに対して何もしません。ウィジェットの破棄に失敗すると、スプレッドシートウィジェットを作成するにつれて、実質的に大きなメモリリークが発生します。

問題の最も迅速な解決策は、古いメソッドを破棄し(destroyメソッドを使用)、新しいデータで再作成することです。別の解決策は、ウィジェットを保持しながら、deleteRows()を使用して既存のデータをすべて削除してから、新しいファイルのデータを挿入することです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top