2016-07-06 57 views
0

在以下示例中,我已將Notebook設置爲不使用焦點,以便在使用支持的快捷方式從小部件導航到小部件時跳過其選項卡通過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) 
+0

請閱讀[docs](http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/ttk-Notebook.html),瞭解採用哪種生成聚焦的方法。它可以防止筆記本本身通過焦點遍歷來獲得焦點。不是標籤。 – R4PH43L

+0

爲了清楚起見,我想阻止筆記本頂部的選項卡標籤聚焦,而不是每個選項卡包含的框架。我試圖設置每個選項卡不像這樣聚焦:'nb.tab(0)['takefocus'] = NO'然而,我懷疑這設置選項卡包含的幀,而不是選項卡的標籤。由於不可見小工具默認爲不焦點,因此未觀察到任何變化。 – IJKLefty

+0

標籤本身應受筆記本本身設置爲'takefocus = NO'的影響。裏面的框架是一個不同的問題,但作爲基本筆記本的一部分的tabctrl本身應該是這樣的。 但是:如果我沒有弄錯,選項只會帶有什麼。所以你應該在添加最後一個標籤之後進行設置。 – R4PH43L

回答

0

爲什麼再添加underline=0?刪除這兩行代碼中的那段代碼。另外,添加另一個參數takefocus=False,同時添加選項卡。當您創建筆記本時,請刪除takefocus

+0

我添加了下劃線參數,因爲我想''樣式直接訪問選項卡。正如我所提到的,'takefocus = NO'參數部分地阻止了標籤標籤的焦點(即通過按Tab鍵循環瀏覽小部件)。從筆記本中取出焦點可消除這種預期效果。 爲nb.add()方法調用添加takefocus = NO似乎爲選項卡中的Frame設置了該選項,而不是選項卡標籤。有沒有一種方式可以訪問標籤標籤本身? – IJKLefty