Perl Curses::UI - 以编程方式填充按钮框
Perl Curses::UI - Populate Buttonbox programmatically
我已经摆弄了一段时间了,似乎无法自己想出一个解决方案。 I'm using Curses::UI to build a simple interface that will print out a list of strings belonging to a hash (keys), and when one is selected it will send the respective value off to another method.
编辑:为了清楚起见,我可以对按钮框进行硬编码,它可以正常工作。但我不知道按钮的标签或我提前知道的数字,所以我需要能够以编程方式填充它。
我目前面临的问题是我不知道如何以编程方式填充 Buttonbox 小部件。 documentation 表示 -buttons 标志接受一个数组引用,但将数组传递给它会导致致命错误
Invalid button definition.
It should be a HASH reference,
but is a ARRAY reference.
向它传递一个散列引用是可行的,但只会填充最后一个按钮定义。例如
%btnHash = (-label => 'Button 1', -value => 1, -label => 'Button 2', -value => 2);
$buttons = $win->add(
'videoButtons', 'Buttonbox',
-vertical => 1,
-buttons => [\%btnHash]
);
导致只有 Button 2 出现在屏幕上。我还尝试发送一个散列,其中包含两个按钮,每个按钮都用适当的大括号括起来,但这导致根本没有填充任何内容。
这是我一直在研究的相关代码片段
%btnHash = (-label => 'Button 1', -value => 1);
push(@btnArray,%btnHash);
%btnHash = (-label => 'Button 2', -value => 2);
push(@btnArray,%btnHash);
#Tried an Array of the literal button definitions, same fatal error as before.
#@btnArray = ({-label => 'Button 1', -value => 1},{-label => 'Button 2', -value => 2});
$buttons = $win->add(
'videoButtons', 'Buttonbox',
-vertical => 1,
-buttons => [\@btnArray]
);
它不是很漂亮,但我已经开始把东西往墙上扔,看看有什么用。即使我必须使用一个循环来不断创建一个新的散列并将其存储在一个数组中,这样也可以,但我可能会再次使它过于复杂。
@btnArray = ({-label => 'Button 1', -value => 1},{-label => 'Button 2', -value => 2});
$buttons = $win->add(
'videoButtons', 'Buttonbox',
-vertical => 1,
-buttons => \@btnArray
);
完美运行。只需要摆脱方括号。
哦。
我已经摆弄了一段时间了,似乎无法自己想出一个解决方案。 I'm using Curses::UI to build a simple interface that will print out a list of strings belonging to a hash (keys), and when one is selected it will send the respective value off to another method.
编辑:为了清楚起见,我可以对按钮框进行硬编码,它可以正常工作。但我不知道按钮的标签或我提前知道的数字,所以我需要能够以编程方式填充它。
我目前面临的问题是我不知道如何以编程方式填充 Buttonbox 小部件。 documentation 表示 -buttons 标志接受一个数组引用,但将数组传递给它会导致致命错误
Invalid button definition.
It should be a HASH reference,
but is a ARRAY reference.
向它传递一个散列引用是可行的,但只会填充最后一个按钮定义。例如
%btnHash = (-label => 'Button 1', -value => 1, -label => 'Button 2', -value => 2);
$buttons = $win->add(
'videoButtons', 'Buttonbox',
-vertical => 1,
-buttons => [\%btnHash]
);
导致只有 Button 2 出现在屏幕上。我还尝试发送一个散列,其中包含两个按钮,每个按钮都用适当的大括号括起来,但这导致根本没有填充任何内容。
这是我一直在研究的相关代码片段
%btnHash = (-label => 'Button 1', -value => 1);
push(@btnArray,%btnHash);
%btnHash = (-label => 'Button 2', -value => 2);
push(@btnArray,%btnHash);
#Tried an Array of the literal button definitions, same fatal error as before.
#@btnArray = ({-label => 'Button 1', -value => 1},{-label => 'Button 2', -value => 2});
$buttons = $win->add(
'videoButtons', 'Buttonbox',
-vertical => 1,
-buttons => [\@btnArray]
);
它不是很漂亮,但我已经开始把东西往墙上扔,看看有什么用。即使我必须使用一个循环来不断创建一个新的散列并将其存储在一个数组中,这样也可以,但我可能会再次使它过于复杂。
@btnArray = ({-label => 'Button 1', -value => 1},{-label => 'Button 2', -value => 2});
$buttons = $win->add(
'videoButtons', 'Buttonbox',
-vertical => 1,
-buttons => \@btnArray
);
完美运行。只需要摆脱方括号。 哦。