[再次发布到Mahalo答案]
我的Perl/Tk script有一个初始电子表格,如使用Tk::TableMatrix::Spreadsheet
模块显示的网格。我的电子表格以编程方式称为$ss
。在显示第一个电子表格之前,使用
$ss->pack('forget');
现在的脚本也添加了$mw-> pack('forget');
,但这不是必需的。
我的问题是如何从文件打开第二个文件 - >打开对话框,它会清除显示的第一个文件,就像第一个文件擦除初始网格一样?现在,第二个文件显示为仍在显示的第一个电子表格下方的完整新框架。
感谢您的帮助。
答案 0 :(得分:1)
“pack('forget')”仅从视图中删除小部件。它不会删除它,也不会对其中显示的数据执行任何操作。如果您未能销毁小部件,实际上在创建越来越多的电子表格小部件时会出现大量内存泄漏。
解决问题的最快方法是销毁旧窗口小部件(使用destroy方法)并使用新数据重新创建它。另一种解决方案是保留小部件,但在插入新文件的数据之前使用deleteRows()删除所有现有数据。