gpt4 book ai didi

perl - perl tk widget -command 可以访问自身吗?

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

我有一个 perl TK 小部件,它有一个 -command 回调:

my $widget = $mw->Spinbox( -from => -1000, -to => 1000, -increment => 1, -width => 4, -textvariable => $textvariable, -command => sub { ... });

我想在命令子内的小部件上调用一个方法。

如何以通用方式在回调中获取对小部件本身的引用(不是通过其名称访问 $widget,而是通过一些通用的方式)?

我查看了传递给子程序的 @_ 参数,但它们只包含小部件的值和操作(例如“up”)。我希望能够像在 javascript 中那样通过 $self 或“this”访问小部件。

最佳答案

有两种方法可以将参数传递给回调:

  1. 使用闭包。
  2. 传递一个包含回调和参数的匿名数组。

在这两种情况下,您都需要在将对象分配给它之前声明包含小部件的变量,否则它将不可用。

#!/usr/bin/perl
use warnings;
use strict;

use Tk qw{ MainLoop };

my $mw = 'MainWindow'->new();

my $button1;
$button1 = $mw->Button(-text => 'Start',
-command => sub { $button1->configure(-text => 'Done') }
) ->pack;

my $button2;
$button2 = $mw->Button(-text => 'Start',
-command => [
sub {
my ($button) = @_;
$$button->configure(-text => 'Done');
}, \$button2
]
) ->pack;

MainLoop();

关于perl - perl tk widget -command 可以访问自身吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68141512/

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