我正在寻找绑定<Tab
&gt;的代码语法将按键事件发送到Perl Tk Widget。
通过阅读文档,我看到我可以绑定<Control>
和<Alt>
(以及任意组合),但无法找到<Tab>
键绑定。
我已经尝试...->bind('<Tab>', sub{...});
,但它没有用。
如何绑定它?
答案 0 :(得分:2)
在挖掘了这个问题一段时间后,并探讨评论中提供的所有好建议。我发现实现我的目的的最好方法是派生Widget并创建我自己的自定义小部件,并使用OOP覆盖技术来控制行为。
这就像魅力一样。
因此,对于Tk::Text
,原生<Tab>
事件将绑定到
$mw->bind($class,'<Tab>', 'insertTab');
sub insertTab
{
my ($w) = @_;
$w->Insert("\t");
$w->focus;
$w->break
}
通过从Tk::Text
小部件派生到我自己的Tk::myText
小部件,我能够覆盖insertTab
方法,如下所示:
sub insertTab
{
my ($w) = @_;
// <-- place my stuff here
// <-- to be executed first
$w->SUPER::insertTab(); // <-- then call the original <Tab> handler from the parent
}