我正在尝试使用http://search.cpan.org/dist/Curses-UI/中的Curses:UI库在linux karmic上构建一个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循环之上时,我得到了用户界面,但现在没有任何东西与窗口通信。
简明问题:我需要一些方法来显示用户界面,等待输入和显示消息。
有人能在这方面帮我一下吗?谢谢!
发布于 2011-02-09 20:02:56
我只需要用我自己的eventloop替换$ui->mainloop(),其中我自己的内容也会更新。
对于引用,$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循环中。
https://stackoverflow.com/questions/2931951
复制相似问题