Почему Perl / Tk не стирает мою таблицу? - PullRequest
0 голосов
/ 04 мая 2009

[снова опубликовано в ответах Махало]

Мой скрипт Perl / Tk имеет начальную электронную таблицу, подобную сетке, отображаемой с использованием модулей Tk::TableMatrix::Spreadsheet. Моя электронная таблица программно называется $ss. Эта начальная сетка стирается перед отображением первой электронной таблицы, с

$ss->pack('forget');

Скрипт в том виде, в котором он есть сейчас, также добавляет $mw-> pack('forget');, но в этом нет необходимости.

Мой вопрос заключается в том, как открыть второй файл из диалогового окна Файл -> Открыть и уничтожить первый отображаемый файл, так же, как первый файл стирает исходную сетку? Прямо сейчас второй файл отображается как полностью новый кадр под все еще отображаемой первой электронной таблицей.

Заранее спасибо за помощь.

1 Ответ

1 голос
/ 08 мая 2009

"pack ('Забыли')" просто удаляет виджет из вида. Он не удаляет его и ничего не делает с данными, отображаемыми в нем. Если вам не удастся уничтожить виджет, у вас будет большая утечка памяти, так как вы создаете все больше и больше виджетов электронных таблиц.

Самое быстрое решение вашей проблемы - уничтожить старый виджет (используя метод destroy) и воссоздать его с новыми данными. Другое решение - сохранить виджет, но использовать deleteRows (), чтобы удалить все существующие данные перед вставкой данных для нового файла.

...