ttk-style nicht verstanden

Fragen zu Tkinter.
Antworten
Benutzeravatar
Goswin
User
Beiträge: 366
Registriert: Freitag 8. Dezember 2006, 11:47
Wohnort: Ulm-Böfingen
Kontaktdaten:

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".
Schorlem
User
Beiträge: 40
Registriert: Dienstag 3. Juni 2014, 16:37

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.
Diese Nachricht wurde maschinell erstellt und ist daher ohne Unterschrift gültig.
Benutzeravatar
Goswin
User
Beiträge: 366
Registriert: Freitag 8. Dezember 2006, 11:47
Wohnort: Ulm-Böfingen
Kontaktdaten:

@Schorlem: Vielen Dank, jetzt funktioniert es!
Antworten