2009-05-04 5 views
0

[croix réaffecté aux réponses Mahalo]Pourquoi Perl/Tk n'effacera-t-il pas ma feuille de calcul?

Mon Perl/Tk script a une feuille de calcul initiale comme grille affichée à l'aide des modules Tk::TableMatrix::Spreadsheet. Ma feuille de calcul est appelée par programme $ss. Cette grille initiale est effacée avant l'affichage de la première feuille de calcul, avec

$ss->pack('forget'); 

Le script ajoute qu'il est maintenant $mw-> pack('forget');, mais ce n'est pas nécessaire. Ma question est de savoir comment ouvrir un deuxième fichier à partir de la boîte de dialogue Fichier Fichier -> Ouvrir et effacer le premier fichier affiché, tout comme le premier fichier efface la grille initiale? À l'heure actuelle, le deuxième fichier apparaît sous la forme d'un nouveau cadre complet sous la première feuille de calcul toujours affichée.

Merci pour l'aide à l'avance.

Répondre

1

"pack ('forget')" supprime simplement un widget de la vue. Il ne le supprime pas, et ne fait rien avec les données affichées à l'intérieur. Si vous ne parvenez pas à détruire le widget, vous aurez, en effet, une grande fuite de mémoire lorsque vous créerez de plus en plus de widgets de feuille de calcul.

La solution la plus rapide à votre problème est de détruire l'ancien widget (en utilisant la méthode destroy) et de le recréer avec les nouvelles données. Une autre solution consiste à conserver le widget, mais utilisez deleteRows() pour supprimer toutes les données existantes avant d'insérer les données pour le nouveau fichier.

Questions connexes