私はtkinter.ttk.Notebookオブジェクトのタブトラバーサルのために複数のキーバインドをユーザーに提供したいと思います。私は、次のコードを使用しています:<制御-bracketleft>をバインドできません、<コントロール-bracketright>(Pythonの3.5.1)
self.notebook = ttk.Notebook(self)
self.notebook.enable_traversal()
self.notebook.bind('<Control-Key-Prior>', self.priorTab)
self.notebook.bind('<Control-Key-Next>', self.nextTab)
self.notebook.bind('<Control-bracketleft>', self.priorTab)
self.notebook.bind('<Control-bracketright>', self.nextTab)
enable_traversalは、()はControl-Shiftキーを押しながらタブおよびコントロール・タブナビゲーションを可能と予想される動作を生成します。また、バインディングは、Control-PageUpおよびControl-PageDownのナビゲーションを可能にする、望ましい結果を生成します。
第三の選択肢は、しかし、失敗しました。私はControl-とControl-を介したナビゲーションを期待していましたが、何もしません。私は、キーシンボルが適切なTkのmanページをチェックして正しいことを確認し、キーシムはPythonインタプリタでエラーを生成しません。私の理解で
、Tkinterには、同じコールバックにバインドされた2つのイベントに問題があってはなりません。どこかで間違いを犯したのですか、またはブラケットキーがサポートされていませんか?ありがとう!
問題を発見しました。例外は発生していませんが、コールバック関数に問題がありました。それが修正されると、すべてが期待どおりに機能しました。私が混乱したのは、Notebook.enable_traversal()メソッドがControl-PageUpとControl-PageDownだけでなく、Control-TabとControl-Shift-Tabの2つのバインディングセットを提供しているからです。 2番目のバインディングペアは、tkinter.ttkで文書化されていません。 – IJKLefty