gpt4 book ai didi

perl - 我如何关闭 Perl/Tk 中的窗口?

转载 作者:行者123 更新时间:2023-12-02 02:33:14 25 4
gpt4 key购买 nike

在我的 Perl/Tk 脚本中,我打开了两个窗口。单击特定按钮后,我想关闭其中一个。我怎样才能做到这一点?这是我到目前为止所拥有的:

$main = new MainWindow;
$sidebar = $main->Frame(-relief => "raised",
-borderwidth => 2)
->pack (-side=>"left" ,
-anchor => "nw",
-fill => "y");
$Button1 = $sidebar -> Button (-text=>"Open\nNetlist",
-command=> \&GUI_OPEN_NETLIST)
->pack(-fill=>"x");
MainLoop;

sub GUI_OPEN_NETLIST
{
$component_dialog = new MainWindow;
$Button = $component_dialog -> Button (-text=>"Open\nNetlist",
-command=> **close new window**)
->pack(-fill=>"x");
MainLoop;
}

最佳答案

最简单的方法是在按钮-command回调中调用$component_dialog->destroy。这样做的缺点是,如果您想稍后重新显示窗口,则必须重新创建它。withdraw 方法将隐藏窗口而不破坏它,因此您可以在以后需要时重新显示它。这将在按下按钮时为您节省一些时间。 DialogDialogBox 类会在按下其中一个按钮时自动为您执行此操作。如果您需要一个行为类似于传统对话框的窗口,他们可以提供一个更简单的选项,即构建您自己的对话框。

此外,除非在特殊情况下,您不需要多次调用 MainLoop。当您的回调 GUI_OPEN_NETLIST 返回时,MainLoop 将恢复,显式调用 MainLoop 可能会在以后导致奇怪的错误。

我认为这很接近您要找的东西,不过我还没有测试过。

use strict;
use warnings;

my $main = new MainWindow;
my $sidebar = $main->Frame(-relief => "raised",
-borderwidth => 2)
->pack (-side=>"left" ,
-anchor => "nw",
-fill => "y");
my $Button1 = $sidebar -> Button (-text=>"Open\nNetlist",
-command=> \&GUI_OPEN_NETLIST)
->pack(-fill=>"x");
my $component_dialog = $main->Dialog( -buttons => [ 'Close' ], );

MainLoop;

sub GUI_OPEN_NETLIST
{
$component_dialog->Show();
}

如果您不想要一个对话框,您应该考虑是要创建第二个 MainWindow 还是创建一个依赖于现有 MainWindow< 的 Toplevel 窗口Toplevel 将在 MainWindow 关闭时自动关闭,第二个 MainWindow 将在另一个 MainWindow 关闭后保持打开状态关闭。

关于perl - 我如何关闭 Perl/Tk 中的窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2921051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com