如何在 Perl/Tk + AnyEvent 中停止 MainLoop

mic*_*kov 5 perl tk-toolkit anyevent

我正在编写使用 AnyEvent 计时器的 Perl/Tk 程序。如果计时器处于活动状态,我在关闭窗口时遇到问题。我做了这个窗口关闭处理程序:

$self -> {window} -> protocol( 'WM_DELETE_WINDOW' => sub {
                                                   undef $self -> {timer};
                                                   $self -> {window} -> destroy;
});
Run Code Online (Sandbox Code Playgroud)

如果关闭窗口时计时器处于活动状态,则计时器停止,窗口关闭,但 MainLoop 不会停止。怎么了?

Sla*_*zic 2

根据AnyEvent::Impl::Tk文档,创建了一个隐藏的 Tk MainWindow 来让一切正常工作。但似乎这个隐藏的窗口永远不会自动销毁。作为解决方法,您可以自己完成:

$AnyEvent::Impl::Tk::mw->destroy;
Run Code Online (Sandbox Code Playgroud)