Button 如何在Windows上禁用Perl/Tk窗口关闭(';X';)按钮
有没有办法禁用Perl/Tk窗口的关闭(“X”)按钮? 我知道如何使用所描述的技术忽略单击它,但我更愿意将其禁用 我在Windows上使用Perl/Tk 谢谢,Button 如何在Windows上禁用Perl/Tk窗口关闭(';X';)按钮,button,perltk,Button,Perltk,有没有办法禁用Perl/Tk窗口的关闭(“X”)按钮? 我知道如何使用所描述的技术忽略单击它,但我更愿意将其禁用 我在Windows上使用Perl/Tk 谢谢, splintor如果您在Unix环境中,那么您就不走运了。“关闭”按钮由桌面的窗口管理器管理,这是一个完全不同的过程,您无法控制 即使被黑客禁用了“关闭”按钮,用户也可以随时将其恢复 如果窗口管理器允许。例如,启蒙窗口管理器可以 根据需要启用/禁用所有窗口按钮 您在链接中提供的技术正是这样做的。它不会移除 “关闭”按钮。它只是给窗口管理
splintor如果您在Unix环境中,那么您就不走运了。“关闭”按钮由桌面的
窗口管理器管理,这是一个完全不同的过程,您无法控制
即使被黑客禁用了“关闭”按钮,用户也可以随时将其恢复
如果窗口管理器允许。例如,启蒙窗口管理器可以
根据需要启用/禁用所有窗口按钮
您在链接中提供的技术正是这样做的。它不会移除
“关闭”按钮。它只是给窗口管理器一个提示(WM\u DELETE\u window
)。
这取决于窗口管理器是否遵守此提示
另请参见和页
你想要的可能在Windows上实现,但是我对这个操作系统的体验
是有限的,所以可能另一个海报会知道这一点。我有一个我写的应用程序,我想知道同样的事情,我没有禁用它,但我有一个子程序的调用,它只返回代码>
$Mw->protocol('WM_DELETE_WINDOW',sub{return;});
根据,它看起来像是在Windows上运行的:
#!/usr/bin/perl
use warnings;
use strict;
use Tk;
my $window = new MainWindow;
$window ->title("Close test");
$window ->geometry("400x250");
#prevents window from closing
$window->protocol('WM_DELETE_WINDOW' => sub {
print "Do stuff before exiting\n";
exit;
});
MainLoop;
在上面的代码中,您正在截取用户按下“X”时发送的信号,然后可以编写自己的子例程在按下按钮时执行
如果你想禁用关闭图标,请将sub
设置为空(有效地告诉它“按下时什么也不做”):'WM\u DELETE\u WINDOW'=>sub{}
如果你没有真正禁用关闭按钮(我的意思是将其灰显或从窗口装饰中移除),将窗口图标化而不是关闭它可能是最直观的做法。这就是我所做的
$window->protocol('WM_DELETE_window',sub{$window->iconify();})代码>我认为,由于perl/TK是跨平台的(最低公分母),即使是在Windows中,您也需要进行一次严重的黑客攻击才能完成您想要的任务。