1

我有一个问题,退出 PerlTkx脚本会导致 Perl 命令行解释器崩溃。

前任:

use strict;
use warnings;
use Tkx;

my $mw     = Tkx::widget->new('.');
my $button = $mw->new_ttk__button(-text => "Hello", -command => \&main);

Tkx::pack($button);

Tkx::MainLoop;

sub main {
    print "TESTING\n";
    exit 0;
}

此代码生成以下输出:

主窗口

单击“Hello”按钮调用main()打印“TESTING”的子例程,然后尝试退出并使命令行解释器崩溃:

错误信息

这似乎只发生在Tkx脚本中,并且只有在程序已经进入MainLoop调用之前才会崩溃exit。有谁知道这里发生了什么?


Perl 版本信息:

Perl 版本

4

1 回答 1

1

当我从 64 位 Perl 切换到 32 位 Perl 时,这个问题似乎开始了。切换回 64 位版本的 Perl 解决了这个问题。

值得注意的是,g_destroy即使在运行 32 位版本的 Perl 时,choroba 在退出前使用破坏主窗口的解决方案也确实解决了该问题。此外,即使 Perl 可以自行清理它,在退出之前手动销毁窗口可能是更好的做法……您永远不知道其他人试图运行您的脚本可能拥有的 Perl 版本!

于 2015-06-08T18:29:32.453 回答