Seite 1 von 1

ttk-style nicht verstanden

Verfasst: Mittwoch 13. August 2014, 14:43
von Goswin
Ich habe sichergestellt, dass ich Tkinterversion 8.5.11 habe. Warum funktioniert dann der folgende Code nicht?

Code: Alles auswählen

from tkinter import *
import tkinter.ttk as ttk

class TtkBeispiel():
   def __init__(self):
      fenster = Tk()
      style = ttk.Style(); style.configure('hausstil',bg='cyan')
      #
      lb = ttk.Label(fenster,text="Hallo",style='hausstil'); lb.pack()
      #
      fenster.mainloop()

TtkBeispiel()
Fehlermeldung ist "Layout hausstil not found".

Re: ttk-style nicht verstanden

Verfasst: Mittwoch 13. August 2014, 16:05
von Schorlem
Das liegt daran, dass ttk-Styles hierarchisch angeordnet sind und du kein Widget als Parent angegeben hast.
Dabei gibt es für die verschiedenen Widgets auch unterschiedliche Namen für die Parents. Für dein Label wäre das "TLabel". Als nächstes kannst du Childs davon definieren, dies entspräche dem Stilnamen "hausstil.TLabel". Das besondere dabei ist, dass untergeordnete Styles von Parents erben können, dass also nicht definierte Styles von der Oberklasse übernommen werden.
Du kannst also beliebig verschachtelte Styles nehmen, hauptsache, hinten steht "TLabel".

Weiterhin würdest du sowieso nichts sehen, da "bg" keine gültige ttk-Option ist. Du musst "background" benutzen.
Alles in allem:

Code: Alles auswählen

style = ttk.Style()
style.configure('hausstil.TLabel', background='cyan')
lb = ttk.Label(fenster, text="Hallo", style='hausstil.TLabel')
Weitere Informationen dazu gibt's hier.

Re: ttk-style nicht verstanden

Verfasst: Donnerstag 14. August 2014, 09:53
von Goswin
@Schorlem: Vielen Dank, jetzt funktioniert es!