次の例では、フォーカスを取らないようにノートブックを設定して、サポートされているショートカットを使用してウィジェットからウィジェットにナビゲートする際にタブをスキップします〜によってenable_traversal()
。これは主に機能しますが、完全には機能しません。タブが既に表示されているがフォーカスがない場合は、<Alt-Key>
のアンダーラインスタイルのショートカットを押すとフォーカスが得られます。どうすればこれを防ぐことができますか?takefocus = NOはtkinter.ttk.Notebookタブがフォーカスを取得するのを防ぐことができません
from tkinter import *
from tkinter import ttk
root = Tk()
nb = ttk.Notebook(root, takefocus = NO)
nb.enable_traversal()
f1 = Frame(nb)
b1a = Button(f1, text = 'Charlie')
b1b = Button(f1, text = 'Delta')
f2 = Frame(nb)
b2a = Button(f2, text = 'Echo')
b2b = Button(f2, text = 'Foxtrot')
b1a.pack()
b1b.pack()
b2a.pack()
b2b.pack()
f1.pack()
f2.pack()
nb.pack()
nb.add(f1, text = 'Alpha', underline = 0)
nb.add(f2, text = 'Bravo', underline = 0)
テイクフォーカスの効果については、[docs](http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/ttk-Notebook.html)をお読みください。これは、ノートブック自体がフォーカストラバーサルを介してフォーカスを取ることを防止する。タブではありません。 – R4PH43L
明確にするには、ノートブックの上部にあるタブのラベルにフォーカスを当てるのではなく、各タブに含まれるフレームを避けたいと思います。 'tabf(0)['takefocus'] = NO'しかし、タブのラベルではなく、タブに含まれるフレームのオプションを設定すると思われます。見えないウィジェットはデフォルトでフォーカスを取らないので、変更は見られませんでした。 – IJKLefty
タブ自体は 'takefocus = NO'に設定されたノートブック自体の影響を受けるはずです。内部のフレームは別の問題ですが、基本的なノートブックの一部としてtabctrl自体がそのように動作する必要があります。 BUT:このオプションでは、間違っていない場合は、そこにあるものだけを取ります。最後のタブを追加した後に設定する必要があります。 – R4PH43L