0

[再次发布到 Mahalo 的答案]

我的Perl/Tk 脚本有一个初始电子表格,如使用Tk::TableMatrix::Spreadsheet模块显示的网格。我的电子表格以编程方式称为$ss. 这个初始网格在第一个电子表格显示之前被擦除,使用

$ss->pack('forget');

现在的脚本也添加了$mw-> pack('forget');,但这不是必需的。

我的问题是如何从“文件”->“打开”对话框打开第二个文件并清除显示的第一个文件,就像第一个文件清除初始网格一样?现在,第二个文件在仍然显示的第一个电子表格下方显示为一个全新的框架。

我在这里先向您的帮助表示感谢。

4

1 回答 1

1

"pack('forget')" 只是从视图中删除一个小部件。它不会删除它,也不会对其中显示的数据做任何事情。如果您未能销毁小部件,那么实际上,当您创建越来越多的电子表格小部件时,您将有很大的内存泄漏。

解决问题的最快方法是销毁旧的小部件(使用 destroy 方法)并使用新数据重新创建它。另一种解决方案是保留小部件,但在为新文件插入数据之前使用 deleteRows() 删除所有现有数据。

于 2009-05-08T11:10:02.190 回答