2010-02-16 3 views
2

변환 프로그램 용 GUI를 만들려고합니다. 로그 파일을 포함하는 프레임을 만들고 싶지만 가져올 수 없습니다. 전체 윈도우를 스크롤 가능하게 만드는 코드를 찾았지만 원하는 것은 아닙니다. 난 그냥 chainging 텍스트 변수와 레이블을 포함하는 프레임을 스크롤 싶어요. Perl Tk에서 단일 프레임을 어떻게 스크롤 할 수 있습니까?

가 난 다음 코드를 시도했다 :

$s = $parent->new_ttk__scrollbar(-orient => 'vertical', -command => [$frame, 'yview']); 
$frame->configure(-scrollcommand => [$s, 'set']); 

을하지만 오류가 발생합니다. Perl은 scrollcommand이 인식 된 명령이 아니라고 말합니다.

나는 페이스트 빈에 내 코드의 조각을 게시 한 : http://pastebin.com/d22e5b134

답변

2

프레임 위젯은 스크롤되지 않습니다 (즉, 그들은 xviewyview 방법을 지원하지 않습니다). 프레임의 레이블 대신 텍스트 위젯을 사용하십시오. 게으른 사람이라면 Tkx::Scrolled을 사용하십시오. 라벨을 읽기 전용으로 사용하기 때문에 라벨을 사용하는 경우 대신 Tkx::ROText을 사용하십시오. 그리고 내 자신의 모듈을 홍보하는 동안 좋은 Find-As-You-Type 검색 인터페이스에 Tkx::FindBar을 사용하십시오.

use strict; 
use warnings; 

use Tkx; 
use Tkx::FindBar; 
use Tkx::ROText; 
use Tkx::Scrolled; 

my $mw = Tkx::widget->new('.'); 

my $text = $mw->new_tkx_Scrolled('tkx_ROText', 
    -scrollbars => 'osoe', 
    -wrap  => 'none', 
); 

my $findbar = $mw->new_tkx_FindBar(-textwidget => $text); 

$findbar->add_bindings($mw, 
    '<Control-f>' => 'show', 
    '<Escape>'  => 'hide', 
    '<F3>'   => 'next', 
    '<Control-F3>' => 'previous', 
); 

$text->g_pack(-fill => 'both', -expand => 1); 

$findbar->g_pack(
    -after => $text, 
    -side => 'bottom', 
    -fill => 'x', 
); 

$findbar->hide(); 

open(my $fh, '<', __FILE__) or die; 
$text->insert('end', do { local $/; <$fh> }); 
close $fh; 

$mw->g_focus(); 
Tkx::MainLoop(); 
+0

도움 주셔서 감사합니다. 스크롤 할 수없는 프레임을 알지 못했습니다. 필자는 필요할 때마다 비활성화, 재 작성 및 쓰기 기능을 갖춘 텍스트 위젯을 사용했습니다. 내 GUI의 가장 중요한 부분을 끝내면 모듈을 살펴볼 것입니다. 아직도 고마워. 차오 – Sebapabst