2010-05-28 99 views
2

我想用庫詛咒:從http://search.cpan.org/dist/Curses-UI/ 的UI來構建一個Linux操作系統的UI。Perl詛咒:: 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循環之上我被賦予了用戶界面,但現在沒有任何東西與窗口通信。

緊縮問題:我需要一些顯示用戶界面等待輸入和顯示消息的方式。

任何人都可以請幫助我嗎?謝謝!

+0

你必須使用Curses嗎? [Wx Widgets](http://search.cpan.org/perldoc?Wx)目前是Perl最活躍的GUI工具包。 – 2010-05-28 21:47:55

回答

4

我只是用我自己的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 } 
} 

所以我只想你自己的節拍()函數添加到while循環:

僅供參考$用戶界面 - >主循環()執行如下。