0
표준 파일 열기, 저장 및 새로 만들기 옵션이있는 메뉴 모음을 추가하려고합니다. 그러나 예상대로 동작하는 대신 프레임을 만들 때 열기, 저장 및 새 작업을 처리하는 서브 루틴이 시작됩니다. 그러나 실제로 클릭 할 때 그렇지 않습니다.Perl/Tk 메뉴 모음의 단점
다음 코드는 제가 사용하고있는 코드입니다. (메인 창은 도구 모음을 포함)
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
use Data::Dumper;
use Tk 8.0;
use Tk::NoteBook;
use Tk::MsgBox;
my $mw=MainWindow->new;
$mw->geometry("+500+300");
# Menu Bar Buttons
my $mbar=$mw->Menu();
$mw->configure(-menu => $mbar);
my $file=$mbar->cascade(-label=>"~File", -tearoff => 0);
my $help=$mbar->cascade(-label =>"~Help", -tearoff => 0);
# File Menu
$file->command(-label =>'~New ', -command=>&menu_file('n'), -accelerator=>'Ctrl+N');
$file->command(-label =>'~Open ', -command=>&menu_file('o'), -accelerator=>'Ctrl+O');
$file->command(-label =>'~Save ', -command=>&menu_file('s'), -accelerator=>'Ctrl+S');
$file->separator();
$file->command(-label =>'~Quit ', -command=>sub{exit}, -accelerator=>'Ctrl+Q');
# Help Menu
$help->command(-label => 'Version');
$help->separator;
$help->command(-label => 'About');
# Menu Bar Accelerators
$mw->bind('<Control-n>', &menu_file('n'));
$mw->bind('<Control-o>', &menu_file('o'));
$mw->bind('<Control-s>', &menu_file('s'));
$mw->bind('<Control-q>', sub{exit});
MainLoop;
sub menu_file {
my $opt=shift;
my $filetypes = [
['Codac files', '.k'],
['All Files', '*' ],
];
if($opt eq 's'){
my $txt_ent_script = $mw->getSaveFile(-filetypes=>$filetypes, -initialfile=>'jitter', -defaultextension=>'.k');
print "Output filename: $txt_ent_script\n";
}
}
덕분으로 두 가지 형태가 미묘하게 다르다는 것을 광고 : – kshenoy
참고 작동합니다. 이에 대한 설명은이 [관련 질문에 대한 답변] (http://stackoverflow.com/questions/2620461#2622318)을 참조하십시오. –