2014-04-29 4 views
5

Ich versuche, eine Tkinter-App zu machen, die nicht wie eine Tkinter-App aussieht. Ich verwende ein ttk-Notizbuch, und die Registerkarten haben diese kleine gepunktete Linie um den Text, wenn sie ausgewählt sind. Es sieht schrecklich aus, und ich kann keine Möglichkeit finden, es mit Styles oder Config zu entfernen. Hier ist ein Screenshot zu klären:Entfernen von Ttk Notebook Tab Gestrichelte Linie

enter image description here

Edit für Code (Ich glaube nicht, es schrecklich nützlich sein werde, da ich eigentlich nur ein Standard-Stil, was zu entfernen versuchen.):

Hier

ist das Notebook Kreation:

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) 

Füllung es 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 

Relevante Stile:

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

einige Code mich Ihnen –

+0

helfen würde helfen, zeichne ich weiß nicht, ob es wäre, da dieser Standard ist alle Themen (ich benutze Standard), und ich versuche, es zu entfernen. Ich werde meine Antwort aktualisieren. – jstaab

Antwort

5

können Sie diese Fokusmarkierung entfernen, indem sie die Unterelemente der Registerkarte Widget zu verändern. Ttk-Widgets werden in subelements zerlegt. Das Layout dieser Elemente wird durch die Methode layout beschrieben (oder in einem Layoutparameter von theme_create). Hier ist ein Befehl Layout Markierungen zu entfernen ist (man kann es wenden sich direkt an Tab oder einem anderen abgeleitet Thema), der kommentierten Teil ist das, was vorher führen den Fokus auf Zeichnung (abgerufen durch 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': ''})], 
     #})], 
    })], 
})] 
) 

Ein mehr Hacky Art und Weise könnte die Farbe dieses Fokusmarkierung zu ändern, zum Beispiel sie die gleiche Farbe wie Hintergrund

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

Ehrfürchtig; Ich werde das heute ausprobieren und sehen, wie es funktioniert! – jstaab

+0

Hey, das ist großartig! Es funktionierte! Vielen Dank! – jstaab

Verwandte Themen