Perl Curses::UI

l7wslrjt  于 12个月前  发布在  Perl
关注(0)|答案(1)|浏览(116)

我试图使用库Curses:UI从http://search.cpan.org/dist/Curses-UI/构建一个Linux上的UI业力。
我可以创建一个简单的用户界面,例如:

#!usr/usr/bin/perl

use strict;
use Curses;
use Curses::UI;

$ui = new Curses::UI(-color_support=>1,-clear_on_exit=>1,-intellidraw=>1);
my $window = $ui->add('window', 'Window',-intellidraw=>1);
my $message = $window->add(-text=>"Hello!",-intellidraw=>1);
$window->focus(); 
$ui->mainloop();

字符串
问:我需要一些方法来传达信息的UI即我有一个循环,将等待消息来改变窗口中的文本。一旦此消息来弹出窗口将显示。尝试:

my $ui = new Curses::UI(-color_support=>1,-clear_on_exit=>1,-intellidraw=>1);
my $window = $ui->add('window', 'Window',-intellidraw=>1);
my $message = $window->add(-text=>"Hello!",-intellidraw=>1);

pseudocode
while(true) #implemented a function to wait
{
    popup($window->text("Hello how are you?"));
}

$window->focus(); 
$ui->mainloop();


问题:上面的方法不起作用。我得到了一个显示我的消息的黑色屏幕。我已经阅读了文档,当我重新定位:$ui->mainloop()在while循环上面时,我得到了用户界面,但现在没有任何东西与窗口通信。
Coincise问题:我需要一些显示用户界面的方法,等待输入和显示消息。
有人能帮我吗?谢谢!

pgky5nke

pgky5nke1#

我只需要把$ui->mainloop()替换为我自己的eventloop,我自己的东西也会更新。
$ui->mainloop()的实现方式如下:

sub mainloop {
    my ($self) = @_;

    # Draw the initial screen.
    $self->focus(undef, 1); # 1 = forced focus
    $self->draw;
    doupdate();

    # Inifinite event loop.
    while (1) { $self->do_one_event }
}

字符串
因此,我只需将您自己的tick()函数添加到while循环中。

相关问题