1

TkxPerlスクリプトを終了すると 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 に切り替えたときに始まったようです。Perl の 64 ビット バージョンに戻すと、問題は解決しました。

g_destroy終了する前に使用してメイン ウィンドウを破棄する choroba のソリューションは、32 ビット バージョンの Perl を実行している場合でも問題を解決したことは注目に値します。また、Perl が自分でウィンドウをクリーンアップできるとしても、終了する前に手動でウィンドウを破棄することをお勧めします...スクリプトを実行しようとしている他の誰かが使用している Perl のバージョンを知ることはできません!

于 2015-06-08T18:29:32.453 に答える