Erstens, einige Begriffe. Ttk ist eine Themenebene für Tk. Es besteht aus einer Sammlung von Themen, die aus Stilen bestehen, die auf Widgets angewendet werden. Die Stile bestehen aus Elementen, die von einer oder mehreren Element-Engines bereitgestellt werden.
Die Absicht des Theming-Layers bestand darin, Tk besser in das native Aussehen des Desktops des Benutzers einzupassen, anstatt dem Programmierer zu erlauben, alle Arten von schrecklich aussehenden benutzerdefinierten Widgets zu erstellen. Das wird bereits von Tk erreicht.
Also unter Windows ist das Standardthema eines, das die Visual Styles API nutzen kann. Das ist die Sache, die die Schaltfläche Kanten und Hintergründe und so weiter auf Windows XP und höher zeichnet. Da Tk ältere Versionen von Windows unterstützte, als dies erstellt wurde, haben wir auch ein Thema, das GDI-Zeichnungselemente unterstützt (winnativ). Für Tk, das auf MacOS läuft, gibt es eine Element-Engine, die das native Design verwendet, und auf X11 müssen wir Tk-Zeichnung verwenden, um etwas auszugeben, das gut aussieht. Die Versuche, Ttk in die GTK + - und Qt-Theme-APIs einzubinden, haben sich nicht wirklich durchgesetzt.
Die verfügbaren Themen hängen also von der Plattform ab, auf der Sie sich befinden. Verschiedene Themen bieten unterschiedliche Konfigurationsmöglichkeiten. Diejenigen, die Elemente verwenden, die von einer externen API bereitgestellt werden (vsapi, winnative oder aqua), lassen Sie nicht wirklich viel anpassen. Designs können jedoch auch Elemente aus der Standard-Element-Engine (Tk gezeichnet) importieren oder images als visuelle Elemente verwenden. Mit der Image-Element-Engine können Sie das Aussehen der gesamten Stylesammlung (und somit das Aussehen aller Widgets) komplett ändern, wenn Sie dies wirklich möchten. Es ist jedoch ziemlich langsam.
Im Allgemeinen ging es darum, die Arbeit an Entwicklern zu reduzieren, damit die Anwendungen nativ aussehen und keine ultimative Anpassbarkeit zulassen.
Um die Themen zur Verfügung zu finden:
>>> ttk.Style().theme_names()
('clam', 'alt', 'default', 'classic')
Dies war auf Linux. Unter Windows 7 gäbe es auch winnative, xpnative und vista. Das anfängliche Design wird abhängig von der Plattform zur Laufzeit ausgewählt, es sei denn, die Anwendung wählt ein alternatives Design aus.
Die innerhalb eines Designs definierten Stile sind alle mit Widgets verknüpft. Es gibt keine Methode zum Aufzählen aller Stile. Sie könnten möglicherweise über alle ttk-Widgets iterieren und sich deren winfo_class()
-Methodenergebnisse anzeigen lassen, da dies den Designstil zeigt, der von diesem Widget verwendet wird.