2015-10-25 15 views
5

Ich habe einige GUIs worden machen vor kurzem und fanden die Tasten eher fad sah so las ich einige Tutorials auf die besser aussehen mit ttk machen und die folgende bekam:Wieviele/Was sind die verschiedenen Arten von ttk-Stilen?

from tkinter import ttk 
from tkinter.ttk import * 

root = tkinter.Tk() 

style = ttk.Style() 
style.configure("BW.TLabel") 

btn = ttk.Button(text="Test") 
btn.pack() 

root.mainloop() 

Ja, es sieht besser aus, aber ich frage mich, ob Es gibt verschiedene TTK-Stile und wenn ja, wie viele gibt es und wo man nach ihnen

Antwort

1

gibt es nicht so viele in Stilen für Ttk gebaut, glaube ich, es ist nur ein Stil pro Art von Widget. Mit ttk können Sie Ihre eigenen Styles definieren, die von den Builtins abgeleitet sind, die gewünschten Bits optimieren und dann diesen Style auf alle Widgets anwenden.

This ist eine gute Referenz zu betrachten. aber sagen Sie zum Beispiel alle ttk Tasten ändern wollte, so dass sie eine rote Schrift verwendet man folgendes tun würde:

import tkinter as tk 
from tkinter import ttk 
from tkinter.ttk import * 

root = tk.Tk() 

style = ttk.Style() 
style.configure("TButton", foreground="red") 

btn = ttk.Button(text="Test") 
btn.pack() 

root.mainloop() 

dann jeder ttk Taste mit einem roten Vordergrund gestylt werden würde.

einen neuen Stil erstellen Sie dies tun würde:

import tkinter as tk 
from tkinter import ttk 
from tkinter.ttk import * 

root = tk.Tk() 

style = ttk.Style() 
style.configure("Mine.TButton", foreground="red") 

btn = ttk.Button(text="Test") 
btn.pack() 
btn2 = ttk.Button(text="Test", style="Mine.TButton") 
btn2.pack() 

root.mainloop() 

so die erste Taste verwendet die Standard-Schaltfläche Stil, aber ich bin Ableitung eine neue Schaltfläche Stil namens Mine.TButton (die .TButton bedeutet es, Kopien der vorhandene Stil von TButton und ändert dann, was Sie im Configure-Aufruf angegeben)

so jeder Button mit diesem Stil erstellt wird gleich aussehen.

2

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.

Verwandte Themen