2010-05-28 2 views
2

Curses 라이브러리를 사용하려고합니다 : http://search.cpan.org/dist/Curses-UI/ 에서 UI를 구성하여 Linux karmic에 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 예에 informatio를 의사 소통 할 수있는 방법이 필요합니다 내가 와서 창에서 텍스트를 변경하는 메시지를 기다리는 루프를 가지고 . 이 메시지가 나타나면 팝업이 표시됩니다. 시도 :

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(); 

문제 : 위 작동하지 않습니다. 내 메시지가 표시되는 어두운 화면이 표시됩니다. 설명서를 읽었을 때 while 루프 위로 $ ui-> mainloop()을 배치하면 사용자 인터페이스가 제공되지만 아무 것도 창에 전달되지 않습니다.

질문 : 사용자 인터페이스를 표시하고 입력 메시지를 표시 할 수있는 방법이 필요합니다.

아무도 도와 주실 수 없습니까? 고맙습니다!

+0

저주를 사용해야합니까? [Wx Widgets] (http://search.cpan.org/perldoc?Wx)은 현재 Perl을 위해 가장 적극적으로 관리되는 GUI 툴킷입니다. –

답변

4

나는 $ ui-> mainloop()을 자신의 이벤트 루프 (eventloop)로 바꿀 것이다.

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 루프에 자신의 틱() 함수를 추가 할 다음과 같이 참조 $ UI-> 돌이 들어

()가 구현됩니다.