Perl Tk TixGrid错误 - " tixGrid:mappedWindows not NULL"

时间:2014-11-26 19:31:19

标签: perl tk

在Perl Tk中使用TixGrid获取此错误:

tixGrid:mappedWindows not NULL

中止(核心转储)

TixGrid是版本4.010。

基本上发生的事情是TixGrid将所有映射的窗口存储在mappedWindows中,我假设它是基于我所做的一些搜索的链表。在销毁窗口时,无论是TixGrid窗口小部件还是主窗口,程序都会崩溃并发出此错误。我的猜测是因为TixGrid要求mappedWindows为NULL以便正确关闭,但代码中的错误在销毁小部件或主窗口时忘记使其为NULL。

我无法在线找到修复程序。我很担心,如果我继续没有找到解决方案,这可能会在几周内回到咬我的屁股。

任何人都知道修复或解决方法吗?

这是我用来测试TixGrid的一些简单代码,它提醒我错误。无论何时关闭主窗口或点击"关闭"按钮。在这段代码中,它是由关闭按钮销毁的主窗口,但如果你也销毁了TixGrid小部件,它会给出错误。



#!usr/bin/perl -w

use strict;
use Tk;
use Tk::TixGrid;

my $mw = MainWindow->new;

my $grid = $mw->Scrolled(
'TixGrid',
-background 	=> "white"
)->pack;


my $button = $mw->Button(
-text=>		=> "Close",
-command	=> sub{$mw->destroy}
)->pack;

&packrow(0);

MainLoop;


sub packrow{
my $row = $_[0];
my $cb_state;

my $cb = $grid->Checkbutton(
-text			=> "Test",
-variable		=> \$cb_state,
-background		=> "white",
-activebackground	=> "white"
);



$grid->set($row,0, -itemtype=> 'window', -widget=> $cb,);
}




1 个答案:

答案 0 :(得分:0)

如果有人考虑使用Tk::TixGrid,因为他们无法让Tk::Table一次删除整行,并且遇到Tk::TixGrid问题,我建议您使用Tk::Table并实现此处实现的行删除算法:

http://stackoverflow.com/questions/27136398/perl-tk-need-table-that-can-insert-other-widgets-and-delete-whole-rows