Perl Tk 键绑定进入
Perl Tk Key Binding to Enter
我尝试制作一个具有 $cmd_entry 的 GUI 来获取输入并在按下 "enter" 键后在 $log_frame 上打印输入。但是,绑定效果不佳。我不知道为什么回调函数有时会起作用而有时却不起作用。当我将键绑定更改为 时,当我按 "Tab" 两次时它会工作一次。
use Tk;
use Tk::ROText;
my $configuration_window = MainWindow->new(-title => "Testing");
$configuration_window->geometry("1024x800");
my $log_frame = $configuration_window->Scrolled("ROText", -scrollbars => 'os',-background => "white",-foreground => "black")->pack(-side => 'left', -expand => 1, -fill => 'both', -padx => 4, -pady => 4);
my $list_frame = $configuration_window->Frame(-borderwidth => 1, -relief => 'groove')->pack(-side => 'right', -fill => 'both', -expand => 1, -padx => 4, -pady => 4);
my $cmd_entry = $log_frame->Entry(-background => "white")->pack(-side => "bottom", -fill => 'x');
$cmd_entry->bind(ref $cmd_entry,'<Enter>',sub {sendLog("enter");});
$log_frame->insert('end', "> ");
MainLoop;
sub sendLog{
my ($text) = @_;
$log_frame->insert('end', "$text\n> ");
}
这一行有几个问题:
$cmd_entry->bind(ref $cmd_entry,'<Enter>',sub {sendLog("enter");});
a) 绑定不将对条目小部件的引用作为第一个参数。
b) '' 绑定标签指的是通过以下方式输入小部件时的事件
鼠标或键盘,而不是回车键,即 .
尝试:
$cmd_entry->bind('<Return>',sub {sendLog("enter");});
$cmd_entry->bind('<Tab>',sub {sendLog("tab");});
我尝试制作一个具有 $cmd_entry 的 GUI 来获取输入并在按下 "enter" 键后在 $log_frame 上打印输入。但是,绑定效果不佳。我不知道为什么回调函数有时会起作用而有时却不起作用。当我将键绑定更改为 时,当我按 "Tab" 两次时它会工作一次。
use Tk;
use Tk::ROText;
my $configuration_window = MainWindow->new(-title => "Testing");
$configuration_window->geometry("1024x800");
my $log_frame = $configuration_window->Scrolled("ROText", -scrollbars => 'os',-background => "white",-foreground => "black")->pack(-side => 'left', -expand => 1, -fill => 'both', -padx => 4, -pady => 4);
my $list_frame = $configuration_window->Frame(-borderwidth => 1, -relief => 'groove')->pack(-side => 'right', -fill => 'both', -expand => 1, -padx => 4, -pady => 4);
my $cmd_entry = $log_frame->Entry(-background => "white")->pack(-side => "bottom", -fill => 'x');
$cmd_entry->bind(ref $cmd_entry,'<Enter>',sub {sendLog("enter");});
$log_frame->insert('end', "> ");
MainLoop;
sub sendLog{
my ($text) = @_;
$log_frame->insert('end', "$text\n> ");
}
这一行有几个问题:
$cmd_entry->bind(ref $cmd_entry,'<Enter>',sub {sendLog("enter");});
a) 绑定不将对条目小部件的引用作为第一个参数。
b) '
尝试:
$cmd_entry->bind('<Return>',sub {sendLog("enter");});
$cmd_entry->bind('<Tab>',sub {sendLog("tab");});