2

Curses/NCurses (まだ違いを理解していません) と perl、より正確にはCurses::UIモジュール、より正確には Curses::UI::Widget パッケージに頭を悩ませようとしています - http://search.cpan.orgを参照してください/~mdxi/Curses-UI/lib/Curses/UI/Widget.pm .

Curses::UI::Widgetそれを理解するために、超単純な「Hello World」から始めたいと思います。

ドキュメントに簡単な例がありますが、Curses::UI::Widget呼び出し$this->generic_focusて未定義であるため、機能しません。実際に何をすべきかわかりません。

ウィジェットを作成するための実際のチュートリアルCurses::UI、または少なくともいくつかの実用的な例はありますか?

編集:自分自身を明確にするために:ドキュメントの基本的なテキストエディターは私から機能しますが、独自のウィジェットを作成したいと思いますが、どの機能をどのように実装するかわかりません。

主に、メソッドが何をすべきかfocus、メソッドを実装する必要があるかどうかはわかりgeneric_focusません。

編集2:

たとえば、上記のリンクされたドキュメントでは、関数generic_focusは に実装されているかのように記述されていますCurses::UI::Widgetが、実際にはどこにも実装されていません。正確には何が起こっているのですか?

4

2 に答える 2

5

このチュートリアルから借用した例

ここに画像の説明を入力

#!/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を参照してください

于 2013-08-13T18:45:34.610 に答える
2

ドキュメントページの簡単な例は私にとってはうまくいきます:

use Curses::UI;
my $cui = Curses::UI->new( -clear_on_exit => 1);
$cui->dialog("Hello, world!");
于 2013-08-13T18:47:41.880 に答える