2016-03-28 11 views
1

<Tab> keypressイベントをPerl Tkウィジェットにバインドするコードの構文を探しています。バインドする方法<Tab> Perl Tkでキーを押しますか?

ドキュメントを読むと、<Control><Alt>(と任意の組み合わせ)をバインドできますが、<Tab>キーバインディングが見つかりませんでした。

私は...->bind('<Tab>', sub{...});を試しましたが、動作しませんでした。

どのようにバインドするのですか?

+0

参考[Python Tkinter - 元のデフォルトのキーバインディングを復元する](http://stackoverflow.com/questions/21468106/python-tkinter-recovering-original-default-key-binding) –

+0

@HåkonHægland:perlやpythonを扱うリンクですか? – NirMH

+0

@NirMH:リンクはPython言語を使用しています。しかし、Tk APIはかなり統一されており、Perlの言葉で書かれていることを解釈できるはずです。または、あなたのために書かれた正確なコードが欲しいですか? – Borodin

答えて

2

この問題をしばらく掘り下げ、コメントに記載されているすべてのアドバイスを検討してください。ウィジェットを派生させて独自のカスタムウィジェットを作成し、その動作を制御するためにOOPオーバーライド技術を使用することが私の目的を達成する最良の方法であることがわかった。

これは魅力的です。

のでTk::Textのために、例えば、ネイティブ<Tab>イベントが

$mw->bind($class,'<Tab>', 'insertTab'); 

sub insertTab 
{ 
    my ($w) = @_; 
    $w->Insert("\t"); 
    $w->focus; 
    $w->break 
} 

にバインドされており、次のように自分のTk::myTextウィジェットにTk::Textウィジェットから派生させることによって、私は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 
}  
関連する問題