Tkinter のバインド タグを理解する
提供されたコードでは、Tkinter のバインド タグの動作、特に次のような矛盾について疑問が生じました。デフォルトおよび変更されたバインド タグを使用します。
デフォルトバインドタグ
デフォルトでは、ウィジェットには次の 4 つのバインド タグがあります。
イベントが発生すると、Tkinter はこれらのバインド タグを順番に反復処理します。特定のタグ上のイベントのバインディングが見つかった場合、それが実行されます。
指定されたコードでは、最初のウィジェット (「entry1」) はデフォルトのバインド タグを使用します。これは、「KeyPress」のクラス バインディングが「KeyPress」のウィジェット バインディングの後に実行されることを意味します。その結果、クラス バインディングが実行されるとき、イベント値 (例: 押された文字キー) はまだウィジェットに存在しません。
変更されたバインドタグ
宛先この問題では、2 番目のウィジェット (「entry2」) がバインド タグの順序を変更します。クラス バインディングをウィジェット バインディングの前に配置すると、クラス バインディングはウィジェット バインディング前に実行されます。これにより、クラス バインディングがイベント値をウィジェットにコピーし、ウィジェット バインディングで使用できるようになります。
Third Widget ("entry3")
3 番目のウィジェット(「entry3」) は、新しいバインド タグ「post-class-bindings」を追加します。このタグは、クラス バインディングの後に実行するイベントをバインドするために使用されます。このタグを使用すると、クラス バインディングの後にウィジェット バインディングが確実に実行され、イベント値が利用可能になります。
結論
デフォルトのバインド タグを使用すると、次のような結果が得られる可能性があります。バインディング内のイベント値にアクセスする際にわずかな遅延が発生します。バインド タグの順序を変更するか、「post-class-bindings」などの追加タグを使用することで、この遅延を排除し、ハンドラーの実行中にイベント値にアクセスできるようにすることができます。
以上がTkinter のバインド タグはバインディングのイベント値アクセスにどのように影響しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。