2014-12-17 3 views
2

나는 Tkx::Tutorial을 따라 Perl을 사용하여 GUI를 만드는 방법을 배우려했습니다. 나는 메뉴를 만들고 그것을 따라하는 법을 보여주는 예제를 가지고있다. 그것은 하나의 기능을 제외하고는 거의 완벽하게 작동합니다. -underline 섹션이 제대로 작동하지 않는 것 같습니다.Perl Tkx 메뉴 "-underline"이 제대로 작동하지 않는 것 같습니다.

-underline => 0은 메뉴 텍스트의 첫 번째 문자에 밑줄을 그으므로 첫 번째 문자를 클릭하지 않고 바로 가기 키로 사용할 수 있습니다.

코드는 다음과 같습니다

#!/usr/bin/perl 

use strict; 
use warnings; 
use Tkx; 

our $VERSION = '1.00'; 

(my $progname = $0) =~ s,.*[\\/],,; 
my $IS_AQUA = Tkx::tk_windowingsystem() eq "aqua"; 

Tkx::package_require('style'); 
Tkx::style__use('as', -priority => 70); 

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

Tkx::MainLoop(); 
exit; 

sub mk_menu { 
    my $mw = shift; 
    my $menu = $mw->new_menu; 

    my $file = $menu->new_menu(
     -tearoff => 0, 
    ); 
    $menu->add_cascade(
     -label  => 'File', 
     -underline => 0, 
     -menu  => $file, 
    ); 
    $file->add_command(
     -label  => 'New', 
     -underline => 0, 
     -accelerator => 'Ctrl+N', 
     -command  => \&new, 
    ); 
    $mw->g_bind('<Control-n>', \&new); 
    $file->add_command(
     -label  => 'Exit', 
     -underline => 0, 
     -command => [\&Tkx::destroy, $mw], 
    ) unless $IS_AQUA; 

    my $help = $menu->new_menu(
     -name => 'help', 
     -tearoff => 0, 
    ); 
    $menu->add_cascade(
     -label  => 'Help', 
     -underline => 0, 
     -menu  => $help, 
    ); 
    $help->add_command(
     -label => "\u$progname Manual", 
     -command => \&show_manual, 
    ); 

    my $about_menu = $help; 
    if ($IS_AQUA) { 
     # On Mac OS we want about box to appear in the application 
     # menu. Anything added to a menu with the name "apple" will 
     # appear in this menu. 
     $about_menu = $menu->new_menu(
      -name => 'apple', 
     ); 
     $menu->add_cascade(
      -menu => $about_menu, 
     ); 
    } 
    $about_menu->add_command(
     -label => "About \u$progname", 
     -command => \&about, 
    ); 

    return $menu; 
} 


sub about { 
    Tkx::tk___messageBox(
     -parent => $mw, 
     -title => "About \u$progname", 
     -type => 'ok', 
     -icon => 'info', 
     -message => "$progname v$VERSION\n" . 
        "Copyright 2005 ActiveState. " . 
        "All rights reserved.", 
    ); 
} 

다음과 같은 창이 생성합니다이 코드 :

Window 1

바로 가기 파일 메뉴를 엽니 작동하지 않는 "F"를 사용을 "H"를 사용하면 도움말 메뉴가 열리지 않습니다.

Window 2

("New"함수는 현재 아무것도 수행하지 않으므로 호출이 중단됩니다. 이것은 지금은이 방법으로되어 있으므로 그냥 무시하십시오.)

"파일"메뉴를 클릭하면 두 번째 메뉴가 열립니다. 여기에서 키보드 단축키는 "N"으로 작동하고 "E"는 해당 명령을 실행하지만 여전히 제대로 밑줄이 그어지지 않습니다.

왜 이것이 정상적으로 작동하지 않습니까?

+0

Windows 7 x64에서 Perl 5.16.1 및 Tkx 1.09에서 작동합니다. –

+1

Windows에서 키보드 단축키를 사용하려면 ALT를 눌러야합니다. – gangabass

+0

고마워요 @ gangabass, Alt 키를 누르면 제대로 작동합니다. – tjwrona1992

답변

0

ALT가 문제를 해결했습니다.

감사합니다. @gangabass!