gpt4 book ai didi

linux - 在 Perl-Tk 中使用 Button 小部件执行命令

转载 作者:太空狗 更新时间:2023-10-29 11:16:12 26 4
gpt4 key购买 nike

#!/usr/local/bin/perl
use Tk;
# Main Window
$mw = new MainWindow;
$label = $mw -> Label(-text=>"Hello World") -> pack();
$button = $mw -> Button(-text => "Quit",
-command => sub { exit }) -> pack();
MainLoop;

在这段代码中,当按下按钮 $button 时,它会关闭程序。因为它执行的是退出命令。我想修改代码,以便在用户单击按钮时刷新 iptables 规则 (iptables -F)。我该怎么做?

我试过这个:

$button = $mw -> Button(-text => "Flush the rules",
-command => system ( iptables -F )) -> pack();

为什么这不起作用?我是否必须为它创建一个子例程(然后在那里编写 iptables -F 命令)然后调用该子例程?我不能像上面代码那样直接输入命令吗?

最佳答案

您需要指定一个代码引用 - 一个回调 - 它将在按下按钮时执行,所以是的,您应该将系统调用放在 sub { } 中。

您编写的是在定义 Button 时对 system() 的调用,因此您将 system() 的返回值指定为回调的代码引用 - 这将不起作用。 system() 函数将在定义 Button 时调用,而不是在按下时调用 - 这不是您想要的。

关于linux - 在 Perl-Tk 中使用 Button 小部件执行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7044478/

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