gpt4 book ai didi

perl - 示例 curses/ncurses Perl 小部件?

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

我正在努力思考 Curses/NCurses(仍然不明白其中的区别)和 perl,更确切地说是 Curses::UI 模块,更确切地说是 Curses::UI: :小部件包 - 请参阅 http://search.cpan.org/~mdxi/Curses-UI/lib/Curses/UI/Widget.pm .

为了理解它,我希望从一些 super 简单的“Hello World”Curses::UI::Widget 开始。

Curses::UI::Widget 文档中有一个简单示例,但这不起作用,因为它调用了 $this->generic_focus 并且它是未定义的,我不知道它实际上应该做什么。

是否有一些编写 Curses::UI 小部件的实际教程,或者至少有一些工作示例?

edit: 为了让我自己清楚:文档中的基本文本编辑器由我使用,但现在我想编写自己的小部件,但我不是确定要实现哪些功能以及如何实现。

主要是,我不确定 focus 方法应该做什么,以及是否必须实现 generic_focus 方法。

编辑 2:

例如,在上面的链接文档中,函数 generic_focus 被写成好像它是在 Curses::UI::Widget 中实现的,但实际上它不是没有在任何地方实现。到底是怎么回事?

最佳答案

例子借自this tutorial

enter image description here

#!/usr/bin/perl -w

use strict;
use Curses::UI;
my $cui = new Curses::UI( -color_support => 1 );
my @menu = (
{ -label => 'File',
-submenu => [
{ -label => 'Exit ^Q', -value => \&exit_dialog }
]
},
);
sub exit_dialog()
{
my $return = $cui->dialog(
-message => "Do you really want to quit?",
-title => "Are you sure???",
-buttons => ['yes', 'no'],

);

exit(0) if $return;
}
my $menu = $cui->add(
'menu','Menubar',
-menu => \@menu,
-fg => "blue",
);
my $win1 = $cui->add(
'win1', 'Window',
-border => 1,
-y => 1,
-bfg => 'red',
);
my $texteditor = $win1->add("text", "TextEditor",
-text => "Here is some text\n"
. "And some more");
$cui->set_binding(sub {$menu->focus()}, "\cX");
$cui->set_binding( \&exit_dialog , "\cQ");
$texteditor->focus();
$cui->mainloop();

curses 和 ncurses 的区别在于 ncurses 是 curses 的开源克隆。参见 https://stackoverflow.com/a/1517768/465183

关于perl - 示例 curses/ncurses Perl 小部件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18216643/

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