perl tk widget -command 可以访问自身吗?
Can a perl tk widget -command access itself?
我有一个 perl TK 小部件,它有一个 -command
回调:
my $widget = $mw->Spinbox( -from => -1000, -to => 1000, -increment => 1, -width => 4, -textvariable => $textvariable, -command => sub { ... });
我想在子命令内的小部件上调用一个方法。
如何以通用方式在回调中获取对小部件本身的引用(不是通过其名称访问 $widget,而是通过一些通用的方式)?
我查看了传递给子程序的 @_
参数,但它们只包含小部件的值和操作(例如“up”)。我希望能够通过 $self 或 javascript.
中的“this”访问小部件
有两种方法可以将参数传递给回调:
- 使用闭包。
- 传递包含回调和参数的匿名数组。
在这两种情况下,您需要在将对象分配给它之前声明包含小部件的变量,否则它将不可用。
#!/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 TK 小部件,它有一个 -command
回调:
my $widget = $mw->Spinbox( -from => -1000, -to => 1000, -increment => 1, -width => 4, -textvariable => $textvariable, -command => sub { ... });
我想在子命令内的小部件上调用一个方法。
如何以通用方式在回调中获取对小部件本身的引用(不是通过其名称访问 $widget,而是通过一些通用的方式)?
我查看了传递给子程序的 @_
参数,但它们只包含小部件的值和操作(例如“up”)。我希望能够通过 $self 或 javascript.
有两种方法可以将参数传递给回调:
- 使用闭包。
- 传递包含回调和参数的匿名数组。
在这两种情况下,您需要在将对象分配给它之前声明包含小部件的变量,否则它将不可用。
#!/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();