2014-04-29 21 views
5

Sto provando a creare un'app tkinter che non assomigli ad un'app tkinter. Sto usando un notebook ttk e le schede hanno questa piccola linea tratteggiata attorno al testo quando sono selezionate. Sembra terribile, e non riesco a trovare un modo per rimuoverlo utilizzando gli stili o la configurazione. Ecco uno screenshot per chiarire:Rimozione della scheda Ttk Notebook Linea tratteggiata

enter image description here

Modifica il codice (non credo che sarà di grande aiuto, dal momento che in realtà sto solo cercando di rimuovere una cosa stile predefinito.):

Qui è la creazione notebook:

tabs = ttk.Notebook(mainframe, width=319, height=210, style=style.Notebook) 
tabs.grid(column=0, row=1, sticky=('n', 'w', 'e', 's')) 
tabs.columnconfigure(0, weight=1) 
tabs.rowconfigure(0, weight=1) 

riempimento in:

tab1 = ttk.Frame(tabs) 
tab1_frame = ttk.Frame(tab1, style=style.Frame) 
tab1_frame.pack(anchor='center', expand=1, fill='both') 
# stick some widgets in 
progress = ttk.Progressbar(tab1_frame, orient="horizontal", length=300, mode="determinate") 
progress.grid(column=1, row=1, columnspan=2, padx=style.padding, pady=style.padding) 
progress['maximum'] = 1000 
progress['value'] = 500 
# More widgets 
# Another tab 
tab2 = ttk.Frame(tabs) 
tab2_frame = ttk.Frame(tab2, style=style.Frame) 
tab2_frame.pack(anchor='center', expand=1, fill='both') 
# blah blah 

stili rilevanti:

style_config = Style() 
style_config.theme_use('default') 

style_config.configure(self.Notebook, 
    background=self.dark, 
    borderwidth=0) 

style_config.configure(self.Tab, 
    background=self.dark, 
    foreground='white', 
    padding=self.padding, 
    borderwidth=0) 
style_config.map(self.Tab, 
    background=[('selected', self.color1)]) 
+0

po 'di codice avrebbe aiutato che ti aiuti –

+0

non so se sarebbe, dal momento che questo è di default tutti i temi (sto usando il default), e sto provando a rimuoverlo. Aggiornerò la mia risposta però. – jstaab

risposta

5

È possibile rimuovere questo contrassegno attenzione alterando gli elementi secondari di widget di scheda. I widget Ttk sono decomposti in subelements. Il layout di questi elementi è descritto attraverso il metodo layout (o in un parametro di layout di theme_create). Ecco un comando per rimuovere i segni di layout (è possibile applicare direttamente alla Tab, o di qualsiasi altro tema derivato), la parte ha commentato è quello che portano in precedenza per disegnare la messa a fuoco (recuperato tramite style.layout("Tab"))

style.layout("Tab", 
[('Notebook.tab', {'sticky': 'nswe', 'children': 
    [('Notebook.padding', {'side': 'top', 'sticky': 'nswe', 'children': 
     #[('Notebook.focus', {'side': 'top', 'sticky': 'nswe', 'children': 
      [('Notebook.label', {'side': 'top', 'sticky': ''})], 
     #})], 
    })], 
})] 
) 

A più hacky modo potrebbe essere quello di modificare il colore di questo marchio a fuoco, ad esempio, per disegnare lo stesso colore come sfondo

style.configure("Tab", focuscolor=style.configure(".")["background"]) 
+0

Impressionante; Ci proverò oggi e vedrò come funziona! – jstaab

+0

Ehi, è fantastico! Ha funzionato! Grazie! – jstaab