如何在wxperl EVT_BUTTON中传递附加参数?

How do I pass additional arguments in wxperl EVT_BUTTON

本文关键字:参数 BUTTON wxperl EVT      更新时间:2023-10-16

我正试图将参数传递给处理wxPerl EVT_BUTTON事件的perl子例程。我明白当我使用:

EVT_BUTTON($frame, $button, &onClick);

我将访问onClick中的$frame和$button及其功能。然而,我试图让子程序读取额外的参数,主要是各种其他Wx::CheckBox值的值/状态。

我看到这个工作的唯一方法是使用全局变量,让onClick读取它们,但我想在其他地方重用onClick,使用全局变量是我最不喜欢的选择。

我尝试了各种方法,但都失败了,例如:

EVT_BUTTON($frame, $button, &onClick(arg1,arg2));

我认为解决方案在于理解Perl引用是如何工作的,因为我们正在传递&onClick&指示器在前面。但是我缺乏这方面的知识……

感谢您的帮助

试试这个,

EVT_BUTTON($frame, $button, sub{ onClick($arg1,$arg2) });

给出了一个子程序的引用,该子程序调用onClick sub,它相当于:

my $subref = sub{ onClick($arg1,$arg2) };
EVT_BUTTON($frame, $button, $subref);