나는 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.",
);
}
다음과 같은 창이 생성합니다이 코드 :
바로 가기 파일 메뉴를 엽니 작동하지 않는 "F"를 사용을 "H"를 사용하면 도움말 메뉴가 열리지 않습니다.
("New"함수는 현재 아무것도 수행하지 않으므로 호출이 중단됩니다. 이것은 지금은이 방법으로되어 있으므로 그냥 무시하십시오.)
"파일"메뉴를 클릭하면 두 번째 메뉴가 열립니다. 여기에서 키보드 단축키는 "N"으로 작동하고 "E"는 해당 명령을 실행하지만 여전히 제대로 밑줄이 그어지지 않습니다.
왜 이것이 정상적으로 작동하지 않습니까?
Windows 7 x64에서 Perl 5.16.1 및 Tkx 1.09에서 작동합니다. –
Windows에서 키보드 단축키를 사용하려면 ALT를 눌러야합니다. – gangabass
고마워요 @ gangabass, Alt 키를 누르면 제대로 작동합니다. – tjwrona1992