tkinter.ttk — Tk-Widgets mit Themes¶
Quellcode: Lib/tkinter/ttk.py
Das Modul tkinter.ttk gibt Zugriff auf den mit Tk 8.5 eingeführten Satz von Tk-Widgets mit Themes. Seine Widgets passen ihr Aussehen an das systemeigene Theme der Plattform an und geben einer Anwendung dadurch ein besseres und einheitlicheres Aussehen und Verhalten als die klassischen tkinter-Widgets, deren Aussehen festgelegt ist.
Die Grundidee von tkinter.ttk ist, den Code, der das Verhalten eines Widgets umsetzt, soweit möglich von dem Code zu trennen, der sein Aussehen umsetzt.
Ttk-Widgets werden genauso verwendet wie die klassischen tkinter-Widgets und nutzen dieselbe Maschinerie: die Widget-Hierarchie, die Geometrie-Manager, die Kopplung an Variablen und die Ereignisbindung. Diese grundlegenden Konzepte sind in der Dokumentation zu tkinter beschrieben und werden hier nicht wiederholt.
Added in version 3.1.
Siehe auch
- Tk Widget Styling Support (TIP #48)
Der Tcl Improvement Proposal, der die Stil-Engine für Widgets mit Themes eingeführt hat.
Ttk verwenden¶
Um Ttk zu verwenden, importiere sein Modul:
from tkinter import ttk
Um die grundlegenden Tk-Widgets zu überschreiben, sollte der Import nach dem Tk-Import stehen:
from tkinter import *
from tkinter.ttk import *
Dieser Code führt dazu, dass mehrere tkinter.ttk-Widgets (Button, Checkbutton, Entry, Frame, Label, LabelFrame, Menubutton, OptionMenu, PanedWindow, Radiobutton, Scale, Scrollbar und Spinbox) die Tk-Widgets automatisch ersetzen.
Bemerkung
Die klassischen Widgets mit from tkinter.ttk import * zu überschreiben ist praktisch, um bestehenden Code anzupassen. Neuer Code wird aber meist verständlicher, wenn er das Modul mit from tkinter import ttk importiert und die Widgets mit Themes ausdrücklich anspricht, etwa mit ttk.Button.
Das hat den unmittelbaren Vorteil, dass die neuen Widgets verwendet werden, was plattformübergreifend für besseres Aussehen und Verhalten sorgt. Allerdings sind die Ersatz-Widgets nicht vollständig kompatibel. Der wichtigste Unterschied ist, dass Widget-Optionen wie fg, bg und andere, die das Aussehen betreffen, in Ttk-Widgets nicht mehr vorhanden sind. Verwende stattdessen die Klasse ttk.Style für bessere Gestaltungsmöglichkeiten.
Ttk-Widgets¶
Ttk bringt 18 Widgets mit, von denen zwölf schon in tkinter vorhanden waren: Button, Checkbutton, Entry, Frame, Label, LabelFrame, Menubutton, PanedWindow, Radiobutton, Scale, Scrollbar und Spinbox. Die anderen sechs sind neu: Combobox, Notebook, Progressbar, Separator, Sizegrip und Treeview. Alle sind Unterklassen von Widget.
Die Ttk-Widgets zu verwenden verbessert Aussehen und Verhalten der Anwendung. Wie oben besprochen gibt es Unterschiede darin, wie die Gestaltung im Code angegeben wird.
Tk-Code:
l1 = tkinter.Label(text="Test", fg="black", bg="white")
l2 = tkinter.Label(text="Test", fg="black", bg="white")
Ttk-Code:
style = ttk.Style()
style.configure("BW.TLabel", foreground="black", background="white")
l1 = ttk.Label(text="Test", style="BW.TLabel")
l2 = ttk.Label(text="Test", style="BW.TLabel")
Weitere Informationen zu TtkStyling findest du in der Dokumentation der Klasse Style.
Widget¶
ttk.Widget legt die Standardoptionen und -methoden fest, die Tk-Widgets mit Themes unterstützen, und ist nicht dafür gedacht, direkt instanziiert zu werden.
Standardoptionen¶
Alle ttk-Widgets akzeptieren die folgenden Optionen:
Option |
Beschreibung |
|---|---|
Klasse |
Gibt die Fensterklasse an. Die Klasse wird verwendet, wenn die Optionsdatenbank nach den übrigen Optionen des Fensters abgefragt wird, um die voreingestellten Bindtags des Fensters zu bestimmen und um Layout und Stil des Widgets voreinzustellen. Diese Option ist nur lesbar und darf nur beim Erzeugen des Fensters angegeben werden. |
cursor |
Gibt den Mauszeiger an, der für das Widget verwendet wird. Siehe den Optionstyp cursor unter Datentypen von Tk-Optionen. Ist die Option auf die leere Zeichenkette gesetzt (die Voreinstellung), wird der Mauszeiger vom übergeordneten Widget übernommen. |
takefocus |
Legt fest, ob das Fenster beim Durchlaufen mit der Tastatur den Fokus annimmt. Zurückgegeben wird 0, 1 oder eine leere Zeichenkette. Wird 0 zurückgegeben, soll das Fenster beim Durchlaufen mit der Tastatur vollständig übersprungen werden. Bei 1 soll das Fenster den Eingabefokus erhalten, solange es sichtbar ist. Und eine leere Zeichenkette bedeutet, dass die Skripte zum Durchlaufen entscheiden, ob das Fenster den Fokus erhält oder nicht. |
Stil |
Kann verwendet werden, um einen eigenen Widget-Stil anzugeben. |
Optionen scrollbarer Widgets¶
Die folgenden Optionen werden von Widgets unterstützt, die über eine Scrollbar gesteuert werden.
Option |
Beschreibung |
|---|---|
xscrollcommand |
Dient der Verständigung mit waagerechten Scrollbars. Wenn sich der Ausschnitt im Fenster des Widgets ändert, ruft das Widget den Callback xscrollcommand auf. Üblicherweise besteht diese Option aus der Methode |
yscrollcommand |
Dient der Verständigung mit senkrechten Scrollbars. Weitere Informationen dazu stehen oben. |
Optionen von Labels¶
Die folgenden Optionen werden von Labels, Buttons und anderen button-artigen Widgets unterstützt.
Option |
Beschreibung |
|---|---|
text |
Gibt eine Textzeichenkette an, die innerhalb des Widgets angezeigt wird. |
textvariable |
Gibt einen Namen an, dessen Wert anstelle der Ressource der Option text verwendet wird. |
underline |
Gibt, wenn gesetzt, den nullbasierten Index eines Zeichens in der Textzeichenkette an, das unterstrichen wird. Das unterstrichene Zeichen dient der Aktivierung über ein Tastenkürzel. |
image |
Gibt ein Bild zum Anzeigen an. Dies ist eine Liste mit einem oder mehr Elementen. Das erste Element ist der voreingestellte Bildname. Der Rest der Liste ist eine Folge von statespec/value-Paaren, wie sie |
compound |
Gibt an, wie das Bild im Verhältnis zum Text angezeigt wird, wenn sowohl die Text- als auch die Bildoption vorhanden sind. Gültige Werte sind:
|
width |
Gibt bei einem Wert größer als null an, wie viel Platz in Zeichenbreiten für das Textlabel bereitgestellt wird, bei einem Wert kleiner als null eine Mindestbreite. Ist der Wert null oder nicht angegeben, wird die natürliche Breite des Textlabels verwendet. |
Optionen zur Abwärtskompatibilität¶
Option |
Beschreibung |
|---|---|
state |
Kann auf „normal“ oder „disabled“ gesetzt werden, um das Zustandsbit „disabled“ zu steuern. Dies ist eine Option, die nur geschrieben werden kann: Sie zu setzen ändert den Widget-Zustand, aber die Methode |
Widget-Zustände¶
Der Widget-Zustand ist eine Bitmap aus voneinander unabhängigen Zustandsflags.
Flag |
Beschreibung |
|---|---|
active |
Der Mauszeiger befindet sich über dem Widget, und das Drücken einer Maustaste löst eine Aktion aus |
disabled |
Das Widget ist durch das Programm deaktiviert |
focus |
Das Widget hat den Tastaturfokus |
pressed |
Das Widget wird gerade gedrückt |
selected |
„On“, „true“ oder „current“ für Dinge wie Checkbuttons und Radiobuttons |
background |
Windows und Mac kennen den Begriff eines „aktiven“ oder im Vordergrund liegenden Fensters. Der Zustand background wird für Widgets in einem Hintergrundfenster gesetzt und für die im Vordergrundfenster gelöscht |
readonly |
Das Widget sollte keine Änderung durch den Benutzer zulassen |
alternate |
Ein widget-spezifisches alternatives Anzeigeformat |
invalid |
Der Wert des Widgets ist ungültig |
Eine Zustandsangabe ist eine Folge von Zustandsnamen, denen optional ein Ausrufezeichen vorangestellt ist, das anzeigt, dass das Bit nicht gesetzt ist.
ttk.Widget¶
Neben den unten beschriebenen Methoden unterstützt ttk.Widget die Methoden tkinter.Widget.cget und tkinter.Widget.configure.
- class tkinter.ttk.Widget¶
- identify(x, y)¶
Gibt den Namen des Elements an der Position x y zurück oder die leere Zeichenkette, wenn der Punkt in keinem Element liegt.
x und y sind Pixelkoordinaten relativ zum Widget.
- instate(statespec, callback=None, *args, **kw)¶
Prüft den Zustand des Widgets. Ist kein Callback angegeben, wird
Truezurückgegeben, wenn der Widget-Zustand zu statespec passt, sonstFalse. Ist ein Callback angegeben, wird er mit args aufgerufen, wenn der Widget-Zustand zu statespec passt.
- state(statespec=None)¶
Ändert den Widget-Zustand oder fragt ihn ab. Ist statespec angegeben, wird der Widget-Zustand entsprechend gesetzt und eine neue statespec zurückgegeben, die angibt, welche Flags geändert wurden. Ist statespec nicht angegeben, werden die derzeit gesetzten Zustandsflags zurückgegeben.
Nicht zu verwechseln mit
Wm.state.
statespec ist üblicherweise eine Liste oder ein Tupel.
Combobox¶
Das Widget ttk.Combobox verbindet ein Textfeld mit einer herunterklappbaren Werteliste. Dieses Widget ist eine Unterklasse von Entry.
Neben den von Widget geerbten Methoden cget(), configure(), identify(), instate() und state() sowie den folgenden von Entry geerbten: bbox(), delete(), icursor(), index(), insert(), selection*, xview* hat es weitere Methoden, die unter ttk.Combobox beschrieben sind.
Optionen¶
Dieses Widget akzeptiert die folgenden spezifischen Optionen:
Option |
Beschreibung |
|---|---|
exportselection |
Boolescher Wert. Wenn gesetzt, ist die Auswahl des Widgets mit der X-Auswahl verknüpft (die etwa durch Aufruf von Misc.selection_get zurückgegeben werden kann). |
justify |
Gibt an, wie der Text innerhalb des Widgets ausgerichtet wird. Einer der Werte „left“, „center“ oder „right“. |
height |
Gibt die Höhe der herunterklappbaren Listbox in Zeilen an. |
postcommand |
Ein Skript (möglicherweise mit Misc.register registriert), das unmittelbar vor dem Anzeigen der Werte aufgerufen wird. Es kann angeben, welche Werte angezeigt werden. |
state |
Einer der Werte „normal“, „readonly“ oder „disabled“. Im Zustand „readonly“ darf der Wert nicht direkt bearbeitet werden, und der Benutzer kann nur einen der Werte aus der Auswahlliste wählen. Im Zustand „normal“ ist das Textfeld direkt bearbeitbar. Im Zustand „disabled“ ist keine Interaktion möglich. |
textvariable |
Gibt einen Namen an, dessen Wert mit dem Wert des Widgets verknüpft ist. Immer wenn sich der zu diesem Namen gehörende Wert ändert, wird der Wert des Widgets aktualisiert und umgekehrt. Siehe |
Werte |
Gibt die Liste der Werte an, die in der Auswahlliste angezeigt werden. |
width |
Gibt als ganze Zahl die gewünschte Breite des Eingabefensters an, gemessen in Zeichen durchschnittlicher Größe der Schriftart des Widgets. |
Bemerkung
Tk 9.1 hat die Option locale hinzugefügt, die die Locale auswählt, anhand der Wort- und Zeichengrenzen innerhalb des Textes bestimmt werden (voreingestellt "C").
Virtuelle Ereignisse¶
Die Combobox-Widgets erzeugen ein virtuelles Ereignis <<ComboboxSelected>>, wenn der Benutzer ein Element aus der Werteliste auswählt.
ttk.Combobox¶
- class tkinter.ttk.Combobox¶
- current(newindex=None)¶
Ist newindex angegeben, wird der Wert der Combobox auf die Elementposition newindex gesetzt. Andernfalls wird der Index des aktuellen Wertes zurückgegeben oder -1, wenn der aktuelle Wert nicht in der Werteliste enthalten ist.
- get()¶
Gibt den aktuellen Wert der Combobox zurück.
- set(value)¶
Setzt den Wert der Combobox auf value.
Spinbox¶
Das Widget ttk.Spinbox ist ein ttk.Entry, das um Pfeile zum Erhöhen und Verringern ergänzt ist. Es kann für Zahlen oder für Listen von Zeichenkettenwerten verwendet werden. Dieses Widget ist eine Unterklasse von Entry. Neben den von Widget geerbten Methoden cget(), configure(), identify(), instate() und state() sowie den folgenden von Entry geerbten: bbox(), delete(), icursor(), index(), insert(), xview* hat es weitere Methoden, die unter ttk.Spinbox beschrieben sind.
Optionen¶
Dieses Widget akzeptiert die folgenden spezifischen Optionen:
Option |
Beschreibung |
|---|---|
aus |
Gleitkommawert. Wenn gesetzt, ist dies der kleinste Wert, bis zu dem der Verringern-Knopf herunterzählt. Als Argument muss er |
to |
Gleitkommawert. Wenn gesetzt, ist dies der größte Wert, bis zu dem der Erhöhen-Knopf hochzählt. |
increment |
Gleitkommawert. Gibt an, um welchen Betrag die Knöpfe zum Erhöhen und Verringern den Wert ändern. Voreingestellt ist 1.0. |
Werte |
Folge von Zeichenketten- oder Gleitkommawerten. Wenn angegeben, durchlaufen die Knöpfe zum Erhöhen und Verringern die Elemente dieser Folge, statt Zahlen hoch- oder herunterzuzählen. |
wrap |
Boolescher Wert. Bei |
format |
Zeichenkettenwert. Gibt das Format der Zahlen an, die von den Knöpfen zum Erhöhen und Verringern gesetzt werden. Es muss die Form „%W.Pf“ haben, wobei W die aufgefüllte Breite des Wertes und P die Genauigkeit ist und „%“ und „f“ wörtlich zu nehmen sind. |
command |
Aufrufbares Python-Objekt. Wird ohne Argumente aufgerufen, sobald einer der Knöpfe zum Erhöhen oder Verringern gedrückt wird. |
Virtuelle Ereignisse¶
Das Spinbox-Widget erzeugt ein virtuelles Ereignis <<Increment>>, wenn der Benutzer <Up> drückt, und ein virtuelles Ereignis <<Decrement>>, wenn er <Down> drückt.
ttk.Spinbox¶
- class tkinter.ttk.Spinbox¶
Bei einem nicht ganzzahligen Schrittwert siehe Zahlenwerte und die Locale.
Added in version 3.8.
- get()¶
Gibt den aktuellen Wert der Spinbox zurück.
- set(value)¶
Setzt den Wert der Spinbox auf value.
Notebook¶
Das Ttk-Notebook-Widget verwaltet eine Sammlung von Fenstern und zeigt jeweils eines davon an. Jedes Kindfenster ist mit einem Tab verknüpft, den der Benutzer auswählen kann, um das angezeigte Fenster zu wechseln.
Optionen¶
Dieses Widget akzeptiert die folgenden spezifischen Optionen:
Option |
Beschreibung |
|---|---|
height |
Gibt, wenn vorhanden und größer als null, die gewünschte Höhe des Bereichs der Flächen an (ohne inneren Abstand und ohne Tabs). Andernfalls wird die größte Höhe aller Flächen verwendet. |
padding |
Gibt an, wie viel zusätzlicher Platz außen um das Notebook herum eingefügt wird. Der Abstand ist eine Liste aus bis zu vier Längenangaben: links oben rechts unten. Sind weniger als vier Elemente angegeben, übernimmt unten den Wert von oben, rechts den von links und oben den von links. |
width |
Gibt, wenn vorhanden und größer als null, die gewünschte Breite des Bereichs der Flächen an (ohne inneren Abstand). Andernfalls wird die größte Breite aller Flächen verwendet. |
Optionen von Tabs¶
Es gibt außerdem Optionen, die nur für Tabs gelten:
Option |
Beschreibung |
|---|---|
state |
Entweder „normal“, „disabled“ oder „hidden“. Bei „disabled“ ist der Tab nicht auswählbar. Bei „hidden“ wird der Tab nicht angezeigt. |
sticky |
Gibt an, wie das Kindfenster innerhalb des Bereichs der Fläche angeordnet wird. Der Wert ist eine Zeichenkette, die keines oder mehrere der Zeichen „n“, „s“, „e“ oder „w“ enthält. Jeder Buchstabe steht für eine Seite (Norden, Süden, Osten oder Westen), an der das Kindfenster haftet, entsprechend dem Geometrie-Manager |
padding |
Gibt an, wie viel zusätzlicher Platz zwischen dem Notebook und dieser Fläche eingefügt wird. Die Schreibweise ist dieselbe wie bei der Option padding, die dieses Widget verwendet. |
text |
Gibt einen Text an, der im Tab angezeigt wird. |
image |
Gibt ein Bild an, das im Tab angezeigt wird. Siehe die bei |
compound |
Gibt an, wie das Bild im Verhältnis zum Text angezeigt wird, wenn sowohl die Option text als auch image vorhanden ist. Die gültigen Werte stehen unter Optionen von Labels. |
underline |
Gibt den nullbasierten Index eines Zeichens in der Textzeichenkette an, das unterstrichen wird. Das unterstrichene Zeichen dient der Aktivierung über ein Tastenkürzel, wenn |
Kennungen von Tabs¶
Die tab_id, die in mehreren Methoden von ttk.Notebook vorkommt, kann jede der folgenden Formen haben:
Eine ganze Zahl zwischen null und der Anzahl der Tabs
Der Name eines Kindfensters
Eine Positionsangabe der Form „@x,y“, die den Tab bezeichnet
Die literale Zeichenkette „current“, die den derzeit ausgewählten Tab bezeichnet
Die literale Zeichenkette „end“, die die Anzahl der Tabs zurückgibt (nur bei
Notebook.index()gültig)
Virtuelle Ereignisse¶
Dieses Widget erzeugt ein virtuelles Ereignis <<NotebookTabChanged>>, nachdem ein neuer Tab ausgewählt wurde.
ttk.Notebook¶
- class tkinter.ttk.Notebook¶
- add(child, **kw)¶
Fügt dem Notebook einen neuen Tab hinzu.
Wird window derzeit vom Notebook verwaltet, ist aber verborgen, wird es an seiner früheren Position wiederhergestellt.
Die Liste der verfügbaren Optionen steht unter Optionen von Tabs.
- forget(tab_id)¶
Entfernt den durch tab_id angegebenen Tab und hebt Abbildung und Verwaltung des zugehörigen Fensters auf.
Dies verdeckt das geerbte
forget()des Geometrie-Managers. Verwendepack_forget(),grid_forget()oderplace_forget(), um das Widget selbst aus seinem Manager zu entfernen.
- hide(tab_id)¶
Verbirgt den durch tab_id angegebenen Tab.
Der Tab wird nicht angezeigt, das zugehörige Fenster bleibt aber vom Notebook verwaltet und seine Konfiguration erhalten. Verborgene Tabs können mit dem Befehl
add()wiederhergestellt werden.
- identify(x, y)¶
Gibt den Namen des Tab-Elements an der Position x, y zurück oder die leere Zeichenkette, wenn dort keines ist.
- index(tab_id)¶
Gibt den numerischen Index des durch tab_id angegebenen Tabs zurück oder die Gesamtzahl der Tabs, wenn tab_id die Zeichenkette „end“ ist.
- insert(pos, child, **kw)¶
Fügt an der angegebenen Position eine Fläche ein.
pos ist entweder die Zeichenkette „end“, ein ganzzahliger Index oder der Name eines verwalteten Kind-Widgets. Wird child bereits vom Notebook verwaltet, wird es an die angegebene Position verschoben.
Die Liste der verfügbaren Optionen steht unter Optionen von Tabs.
- select(tab_id=None)¶
Wählt die angegebene tab_id aus.
Das zugehörige Kindfenster wird angezeigt, und die Abbildung des zuvor ausgewählten Fensters wird aufgehoben, sofern es ein anderes ist. Wird tab_id weggelassen, wird der Widget-Name der derzeit ausgewählten Fläche zurückgegeben.
- tab(tab_id, option=None, **kw)¶
Fragt die Optionen der angegebenen tab_id ab oder ändert sie.
Ist kw nicht angegeben, wird ein Dictionary der Optionswerte des Tabs zurückgegeben. Ist option angegeben, wird der Wert dieser option zurückgegeben. Andernfalls werden die Optionen auf die entsprechenden Werte gesetzt.
- tabs()¶
Gibt ein Tupel der vom Notebook verwalteten Fenster zurück.
- enable_traversal()¶
Schaltet das Durchlaufen mit der Tastatur für ein Toplevel-Fenster ein, das dieses Notebook enthält.
Dies erweitert die Bindungen für das Toplevel-Fenster, das das Notebook enthält, folgendermaßen:
Control-Tab: wählt den Tab nach dem derzeit ausgewählten aus.
Shift-Control-Tab: wählt den Tab vor dem derzeit ausgewählten aus.
Alt-K: wobei K das unterstrichene Zeichen des Tastenkürzels eines beliebigen Tabs ist, wählt diesen Tab aus.
Mehrere Notebooks in einem einzelnen Toplevel können für das Durchlaufen eingeschaltet werden, auch verschachtelte Notebooks. Das Durchlaufen eines Notebooks funktioniert aber nur richtig, wenn alle Flächen unmittelbare Kind-Widgets des Notebooks sind.
Progressbar¶
Das Widget ttk.Progressbar zeigt den Stand eines langlaufenden Vorgangs an. Es kann in zwei Modi arbeiten: 1) im bestimmten Modus, der den erledigten Anteil im Verhältnis zur gesamten zu erledigenden Arbeit anzeigt, und 2) im unbestimmten Modus, der eine Animation anzeigt, um dem Benutzer zu zeigen, dass die Arbeit vorangeht.
Optionen¶
Dieses Widget akzeptiert die folgenden spezifischen Optionen:
Option |
Beschreibung |
|---|---|
orient |
Einer der Werte „horizontal“ oder „vertical“. Gibt die Ausrichtung des Fortschrittsbalkens an. |
length |
Gibt die Länge der langen Achse des Fortschrittsbalkens an (die Breite bei waagerechter, die Höhe bei senkrechter Ausrichtung). |
mode |
Einer der Werte „determinate“ oder „indeterminate“. |
maximum |
Eine Zahl, die den größten Wert angibt. Voreingestellt ist 100. |
Wert |
Der aktuelle Wert des Fortschrittsbalkens. Im Modus „determinate“ steht er für den Anteil der erledigten Arbeit. Im Modus „indeterminate“ wird er modulo maximum gedeutet, das heißt, der Fortschrittsbalken schließt einen „Zyklus“ ab, wenn sein Wert um maximum steigt. |
variable |
Ein Name, der mit dem Wert der Option verknüpft ist. Wenn angegeben, wird der Wert des Fortschrittsbalkens automatisch auf den Wert dieses Namens gesetzt, sobald dieser geändert wird. |
phase |
Nur lesbare Option. Das Widget erhöht den Wert dieser Option regelmäßig, solange ihr Wert größer als 0 und im bestimmten Modus kleiner als maximum ist. Diese Option kann vom aktuellen Theme genutzt werden, um zusätzliche Animationseffekte zu erzeugen. |
ttk.Progressbar¶
- class tkinter.ttk.Progressbar¶
- start(interval=None)¶
Beginnt den Modus des automatischen Hochzählens: Es wird ein wiederkehrendes Zeitgeberereignis eingeplant, das alle interval Millisekunden
Progressbar.step()aufruft. Wird interval weggelassen, sind es 50 Millisekunden.
- step(amount=None)¶
Erhöht den Wert des Fortschrittsbalkens um amount.
Wird amount weggelassen, ist es 1.0.
- stop()¶
Beendet den Modus des automatischen Hochzählens: Alle von
Progressbar.start()für diesen Fortschrittsbalken gestarteten wiederkehrenden Zeitgeberereignisse werden abgebrochen.
Separator¶
Das Widget ttk.Separator zeigt einen waagerechten oder senkrechten Trennbalken an.
Es hat außer den von ttk.Widget geerbten keine weiteren Methoden.
Optionen¶
Dieses Widget akzeptiert die folgende spezifische Option:
Option |
Beschreibung |
|---|---|
orient |
Einer der Werte „horizontal“ oder „vertical“. Gibt die Ausrichtung des Trennbalkens an. |
Sizegrip¶
Das Widget ttk.Sizegrip (auch als Grow Box bekannt) erlaubt dem Benutzer, die Größe des umgebenden Toplevel-Fensters zu ändern, indem er den Griff drückt und zieht.
Dieses Widget hat außer den von ttk.Widget geerbten weder spezifische Optionen noch spezifische Methoden.
Plattformspezifische Hinweise¶
Unter macOS enthalten Toplevel-Fenster voreingestellt automatisch einen integrierten Größengriff. Ein
Sizegriphinzuzufügen ist harmlos, da der integrierte Griff das Widget einfach verdeckt.
Fehler¶
Wurde die Position des umgebenden Toplevels relativ zum rechten oder unteren Bildschirmrand angegeben (zum Beispiel ….), ändert das Widget
Sizegripdie Fenstergröße nicht.Dieses Widget unterstützt nur das Ändern der Größe nach „southeast“.
Treeview¶
Das Widget ttk.Treeview zeigt eine hierarchische Sammlung von Einträgen an. Jeder Eintrag hat ein Textlabel, wahlweise ein Bild und wahlweise eine Liste von Datenwerten. Die Datenwerte werden in aufeinanderfolgenden Spalten nach dem Label des Baums angezeigt.
Die Reihenfolge, in der die Datenwerte angezeigt werden, lässt sich über die Widget-Option displaycolumns steuern. Das Baum-Widget kann außerdem Spaltenköpfe anzeigen. Auf Spalten kann über ihre Nummer oder über die in der Widget-Option columns aufgeführten symbolischen Namen zugegriffen werden. Siehe Kennungen von Spalten.
Jeder Eintrag wird durch einen eindeutigen Namen bezeichnet. Das Widget erzeugt Eintrags-IDs, wenn der Aufrufer sie nicht angibt. Es gibt einen ausgezeichneten Wurzeleintrag mit dem Namen {}. Der Wurzeleintrag selbst wird nicht angezeigt, seine Kindeinträge erscheinen auf der obersten Ebene der Hierarchie.
Jeder Eintrag hat außerdem eine Liste von Tags, über die sich Ereignisbindungen mit einzelnen Einträgen verknüpfen und das Aussehen des Eintrags steuern lassen.
Das Treeview-Widget unterstützt waagerechtes und senkrechtes Blättern, entsprechend den unter Optionen scrollbarer Widgets beschriebenen Optionen und den Methoden Treeview.xview() und Treeview.yview().
Optionen¶
Dieses Widget akzeptiert die folgenden spezifischen Optionen:
Option |
Beschreibung |
|---|---|
columns |
Eine Liste von Spaltenkennungen, die die Anzahl der Spalten und ihre Namen angibt. |
displaycolumns |
Eine Liste von Spaltenkennungen (entweder symbolische oder ganzzahlige Indizes), die angibt, welche Datenspalten angezeigt werden und in welcher Reihenfolge sie erscheinen, oder die Zeichenkette „#all“. |
height |
Gibt die Anzahl der Zeilen an, die sichtbar sein sollen. Hinweis: Die angeforderte Breite ergibt sich aus der Summe der Spaltenbreiten. |
padding |
Gibt den inneren Abstand für das Widget an. Der Abstand ist eine Liste aus bis zu vier Längenangaben. |
selectmode |
Steuert, wie die integrierten Klassenbindungen die Auswahl verwalten. Einer der Werte „extended“, „browse“ oder „none“. Ist er auf „extended“ gesetzt (die Voreinstellung), können mehrere Einträge ausgewählt werden. Bei „browse“ wird immer nur ein einzelner Eintrag ausgewählt. Bei „none“ wird die Auswahl nicht geändert. Beachte, dass Anwendungscode und Tag-Bindungen die Auswahl beliebig setzen können, unabhängig vom Wert dieser Option. |
show |
Eine Liste, die keinen oder mehrere der folgenden Werte enthält und angibt, welche Elemente des Baums angezeigt werden.
Voreingestellt ist „tree headings“, also alle Elemente anzuzeigen. Hinweis: Spalte #0 bezeichnet immer die Baumspalte, auch wenn show=“tree“ nicht angegeben ist. |
Bemerkung
Tk 9.0 hat mehrere Funktionen zu Treeview hinzugefügt. Die Option selectmode hat die Werte "single" und "multiple" erhalten. Neu eingeführt wurden die Widget-Optionen selecttype (Auswahl von "item" oder "cell"), striped (abwechselnd gestreifte Zeilen) und titlecolumns / titleitems (Spalten oder Zeilen, die beim Blättern feststehen). Die Spaltenoption separator wurde ergänzt, und Einträge haben eine Option hidden erhalten. Tk 9.1 hat die Optionen rowheight und headingheight hinzugefügt.
Optionen von Einträgen¶
Die folgenden Eintragsoptionen können für Einträge in den Widget-Befehlen insert und item angegeben werden.
Option |
Beschreibung |
|---|---|
text |
Das Textlabel, das für den Eintrag angezeigt wird. |
image |
Ein Tk-Image, das links vom Label angezeigt wird. |
Werte |
Die Liste der Werte, die zu dem Eintrag gehören. Jeder Eintrag sollte genauso viele Werte haben, wie die Widget-Option columns angibt. Sind weniger Werte als Spalten vorhanden, gelten die übrigen Werte als leer. Sind mehr Werte als Spalten vorhanden, werden die zusätzlichen Werte ignoriert. |
open |
|
tags |
Eine Liste der Tags, die zu diesem Eintrag gehören. |
Optionen von Tags¶
Für Tags können die folgenden Optionen angegeben werden:
Option |
Beschreibung |
|---|---|
foreground |
Gibt die Vordergrundfarbe des Textes an. |
background |
Gibt die Hintergrundfarbe der Zelle oder des Eintrags an. |
font |
Gibt die Schriftart an, die beim Zeichnen von Text verwendet wird. |
image |
Gibt das Bild des Eintrags an, falls die Option image des Eintrags leer ist. |
Kennungen von Spalten¶
Spaltenkennungen haben eine der folgenden Formen:
Ein symbolischer Name aus der Liste der Option columns.
Eine ganze Zahl n, die die n-te Datenspalte angibt.
Eine Zeichenkette der Form #n, wobei n eine ganze Zahl ist, die die n-te Anzeigespalte angibt.
Hinweise:
Die Optionswerte eines Eintrags können in einer anderen Reihenfolge angezeigt werden als in der, in der sie gespeichert sind.
Spalte #0 bezeichnet immer die Baumspalte, auch wenn show=“tree“ nicht angegeben ist.
Eine Datenspaltennummer ist ein Index in die Liste der Optionswerte eines Eintrags. Eine Anzeigespaltennummer ist die Spaltennummer im Baum, unter der die Werte angezeigt werden. Die Labels des Baums werden in Spalte #0 angezeigt. Ist die Option displaycolumns nicht gesetzt, wird die Datenspalte n in Spalte #n+1 angezeigt. Nochmals: Spalte #0 bezeichnet immer die Baumspalte.
Virtuelle Ereignisse¶
Das Treeview-Widget erzeugt die folgenden virtuellen Ereignisse.
Ereignis |
Beschreibung |
|---|---|
<<TreeviewSelect>> |
Wird erzeugt, sobald sich die Auswahl ändert. |
<<TreeviewOpen>> |
Wird unmittelbar davor erzeugt, dass der Eintrag mit dem Fokus auf open=True gesetzt wird. |
<<TreeviewClose>> |
Wird unmittelbar danach erzeugt, dass der Eintrag mit dem Fokus auf open=False gesetzt wurde. |
Mit den Methoden Treeview.focus() und Treeview.selection() lässt sich bestimmen, welcher Eintrag oder welche Einträge betroffen sind.
ttk.Treeview¶
- class tkinter.ttk.Treeview¶
- bbox(item, column=None)¶
Gibt das umschließende Rechteck des angegebenen item zurück (relativ zum Fenster des Treeview-Widgets), in der Form (x, y, width, height).
Ist column angegeben, wird das umschließende Rechteck dieser Zelle zurückgegeben. Ist das item nicht sichtbar (also wenn es ein Nachkomme eines geschlossenen Eintrags ist oder aus dem sichtbaren Bereich geschoben wurde), wird eine leere Zeichenkette zurückgegeben.
Dies verdeckt das geerbte
Misc.bbox(). Verwendegrid_bbox()für das umschließende Rechteck des Rasters.
- get_children(item=None)¶
Gibt ein Tupel der Kindeinträge zurück, die zu item gehören.
Ist item nicht angegeben, werden die Kindeinträge der Wurzel zurückgegeben.
- set_children(item, *newchildren)¶
Ersetzt die Kindeinträge von item durch newchildren.
Kindeinträge, die in item vorhanden sind, aber nicht in newchildren, werden vom Baum gelöst. Kein Eintrag in newchildren darf ein Vorfahre von item sein. Beachte, dass newchildren nicht anzugeben dazu führt, dass die Kindeinträge von item gelöst werden.
- column(column, option=None, **kw)¶
Fragt die Optionen der angegebenen column ab oder ändert sie.
Ist kw nicht angegeben, wird ein Dictionary der Optionswerte der Spalte zurückgegeben. Ist option angegeben, wird der Wert dieser option zurückgegeben. Andernfalls werden die Optionen auf die entsprechenden Werte gesetzt.
Die gültigen Optionen und Werte sind:
- id
Gibt den Spaltennamen zurück. Dies ist eine nur lesbare Option.
- anchor: Einer der Tk-Standardwerte für anchor.
Gibt an, wie der Text in dieser Spalte innerhalb der Zelle ausgerichtet wird.
- minwidth: width
Die kleinste Breite der Spalte in Pixeln. Das Treeview-Widget macht die Spalte nicht schmaler als von dieser Option angegeben, wenn die Größe des Widgets geändert wird oder der Benutzer eine Spalte zieht.
- separator:
True/False Gibt an, ob rechts von der Spalte eine Spaltentrennlinie gezeichnet wird.
- stretch:
True/False Gibt an, ob die Breite der Spalte angepasst wird, wenn die Größe des Widgets geändert wird.
- width: width
Die Breite der Spalte in Pixeln.
Um die Baumspalte zu konfigurieren, rufe dies mit column = „#0“ auf
- delete(*items)¶
Löscht alle angegebenen items und alle ihre Nachkommen.
Der Wurzeleintrag darf nicht gelöscht werden.
- detach(*items)¶
Löst alle angegebenen items aus dem Baum.
Die Einträge und alle ihre Nachkommen sind weiterhin vorhanden und können an anderer Stelle im Baum wieder eingefügt werden, werden aber nicht angezeigt.
Der Wurzeleintrag darf nicht gelöst werden.
- exists(item)¶
Gibt
Truezurück, wenn das angegebene item im Baum vorhanden ist, sonstFalse.
- focus(item=None)¶
Ist item angegeben, wird der Eintrag mit dem Fokus auf item gesetzt. Andernfalls wird der aktuelle Eintrag mit dem Fokus zurückgegeben oder ‚‘, wenn es keinen gibt.
Dies verdeckt das geerbte
Misc.focus(). Verwendefocus_set(), um das Widget selbst zu fokussieren.
- heading(column, option=None, **kw)¶
Fragt die Optionen des Spaltenkopfes der angegebenen column ab oder ändert sie.
Ist kw nicht angegeben, wird ein Dictionary der Optionswerte des Spaltenkopfes zurückgegeben. Ist option angegeben, wird der Wert dieser option zurückgegeben. Andernfalls werden die Optionen auf die entsprechenden Werte gesetzt.
Die gültigen Optionen und Werte sind:
- text: text
Der Text, der im Spaltenkopf angezeigt wird.
- image: imageName
Gibt ein Bild an, das rechts vom Spaltenkopf angezeigt wird.
- anchor: anchor
Gibt an, wie der Text des Spaltenkopfes ausgerichtet wird. Einer der Tk-Standardwerte für anchor.
- command: callback
Ein Callback, der aufgerufen wird, wenn das Label des Spaltenkopfes gedrückt wird.
Um den Kopf der Baumspalte zu konfigurieren, rufe dies mit column = „#0“ auf.
- identify(component, x, y)¶
Gibt eine Beschreibung der angegebenen component unter dem durch x und y gegebenen Punkt zurück oder die leere Zeichenkette, wenn an dieser Position keine solche component vorhanden ist.
- identify_row(y)¶
Gibt die Eintrags-ID des Eintrags an Position y zurück.
- identify_column(x)¶
Gibt die Kennung der Anzeigespalte der Zelle an Position x zurück.
Die Baumspalte hat die ID #0.
- identify_region(x, y)¶
Gibt einen der folgenden Werte zurück:
Bereich
Bedeutung
heading
Bereich der Spaltenköpfe des Baums.
separator
Raum zwischen zwei Spaltenköpfen.
tree
Der Bereich des Baums.
cell
Eine Datenzelle.
Verfügbarkeit: Tk 8.6.
- identify_element(x, y)¶
Gibt das Element an Position x, y zurück.
Verfügbarkeit: Tk 8.6.
- index(item)¶
Gibt den ganzzahligen Index von item innerhalb der Liste der Kindeinträge seines Elternteils zurück.
- insert(parent, index, iid=None, **kw)¶
Erzeugt einen neuen Eintrag und gibt die Eintragskennung des neu erzeugten Eintrags zurück.
parent ist die Eintrags-ID des Elterneintrags oder die leere Zeichenkette, um einen neuen Eintrag der obersten Ebene zu erzeugen. index ist eine ganze Zahl oder der Wert „end“ und gibt an, an welcher Stelle in der Liste der Kindeinträge des Elternteils der neue Eintrag eingefügt wird. Ist index kleiner oder gleich null, wird der neue Knoten am Anfang eingefügt. Ist index größer oder gleich der aktuellen Anzahl der Kindeinträge, wird er am Ende eingefügt. Ist iid angegeben, wird es als Eintragskennung verwendet und darf im Baum noch nicht vorhanden sein. Andernfalls wird eine neue, eindeutige Kennung erzeugt.
Die Liste der verfügbaren Optionen steht unter Optionen von Einträgen.
- item(item, option=None, **kw)¶
Fragt die Optionen des angegebenen item ab oder ändert sie.
Sind keine Optionen angegeben, wird ein Dictionary mit Optionen und Werten des Eintrags zurückgegeben. Ist option angegeben, wird der Wert dieser Option zurückgegeben. Andernfalls werden die Optionen auf die entsprechenden, durch kw angegebenen Werte gesetzt.
- move(item, parent, index)¶
Verschiebt item an die Position index in der Liste der Kindeinträge von parent.
Einen Eintrag unter einen seiner Nachkommen zu verschieben ist nicht erlaubt. Ist index kleiner oder gleich null, wird item an den Anfang verschoben, ist es größer oder gleich der Anzahl der Kindeinträge, an das Ende. War item gelöst, wird es wieder angehängt.
reattach()ist ein Alias fürmove().
- next(item)¶
Gibt die Kennung des nächsten Geschwisters von item zurück oder ‚‘, wenn item der letzte Kindeintrag seines Elternteils ist.
- parent(item)¶
Gibt die ID des Elternteils von item zurück oder ‚‘, wenn item auf der obersten Ebene der Hierarchie liegt.
- prev(item)¶
Gibt die Kennung des vorherigen Geschwisters von item zurück oder ‚‘, wenn item der erste Kindeintrag seines Elternteils ist.
- see(item)¶
Stellt sicher, dass item sichtbar ist.
Setzt die Option open aller Vorfahren von item auf
Trueund blättert das Widget bei Bedarf, sodass item im sichtbaren Teil des Baums liegt.
- selection()¶
Gibt ein Tupel der ausgewählten Einträge zurück.
Geändert in Version 3.8:
selection()nimmt keine Argumente mehr an. Verwende zum Ändern des Auswahlzustands die folgenden Auswahlmethoden.
- selection_set(*items)¶
items wird die neue Auswahl.
Geändert in Version 3.6: items kann als einzelne Argumente übergeben werden, nicht nur als ein einziges Tupel.
- selection_add(*items)¶
Fügt items zur Auswahl hinzu.
Geändert in Version 3.6: items kann als einzelne Argumente übergeben werden, nicht nur als ein einziges Tupel.
- selection_remove(*items)¶
Entfernt items aus der Auswahl.
Geändert in Version 3.6: items kann als einzelne Argumente übergeben werden, nicht nur als ein einziges Tupel.
- selection_toggle(*items)¶
Schaltet den Auswahlzustand jedes Eintrags in items um.
Geändert in Version 3.6: items kann als einzelne Argumente übergeben werden, nicht nur als ein einziges Tupel.
- set(item, column=None, value=None)¶
Mit einem Argument wird ein Dictionary aus Spalten-Wert-Paaren für das angegebene item zurückgegeben. Mit zwei Argumenten wird der aktuelle Wert der angegebenen column zurückgegeben. Mit drei Argumenten wird der Wert der angegebenen column im angegebenen item auf den angegebenen value gesetzt.
- tag_bind(tagname, sequence=None, callback=None)¶
Bindet einen Callback für die angegebene Ereignisfolge sequence an das Tag tagname. Wird ein Ereignis an einen Eintrag ausgeliefert, werden die Callbacks für jedes Tag aus der Option tags des Eintrags aufgerufen.
- tag_configure(tagname, option=None, **kw)¶
Fragt die Optionen des angegebenen tagname ab oder ändert sie.
Ist kw nicht angegeben, wird ein Dictionary der Optionseinstellungen für tagname zurückgegeben. Ist option angegeben, wird der Wert dieser option für den angegebenen tagname zurückgegeben. Andernfalls werden die Optionen auf die entsprechenden Werte für den angegebenen tagname gesetzt.
- tag_has(tagname, item=None)¶
Ist item angegeben, wird
Truezurückgegeben, wenn das angegebene item den angegebenen tagname hat, sonstFalse. Andernfalls wird ein Tupel aller Einträge zurückgegeben, die das angegebene Tag haben.Verfügbarkeit: Tk 8.6
- xview(*args)¶
Fragt die waagerechte Position des Treeviews ab oder ändert sie.
- yview(*args)¶
Fragt die senkrechte Position des Treeviews ab oder ändert sie.
Gestaltung mit Ttk¶
Jedem Widget in ttk ist ein Stil zugeordnet, der den Satz der Elemente angibt, aus denen das Widget besteht, wie sie angeordnet sind sowie dynamische und voreingestellte Werte für die Optionen der Elemente. Voreingestellt ist der Name des Stils derselbe wie der Klassenname des Widgets, er kann aber über die Option style des Widgets überschrieben werden. Wenn du den Klassennamen eines Widgets nicht kennst, verwende die Methode Misc.winfo_class (somewidget.winfo_class()).
Siehe auch
- Introduction to the Tk theme engine
Die Manpage
ttk::introerklärt, wie die Theme-Engine arbeitet.- The Tile Widget Set
Joe Englishs Aufsatz von 2004, der die Theme-Engine einführt (damals noch als eigenständige Erweiterung Tile), mit Diagrammen dazu, wie Elemente und Layouts das Aussehen eines Widgets ergeben.
- class tkinter.ttk.Style¶
Diese Klasse dient dazu, die Stildatenbank zu bearbeiten.
- configure(style, query_opt=None, **kw)¶
Fragt den voreingestellten Wert der angegebenen Option oder Optionen in style ab oder setzt ihn.
Jeder Schlüssel in kw ist eine Option, und jeder Wert ist eine Zeichenkette, die den Wert für diese Option angibt.
Um zum Beispiel jeden voreingestellten Button zu einem flachen Button mit etwas Abstand und einer anderen Hintergrundfarbe zu machen:
from tkinter import ttk import tkinter root = tkinter.Tk() ttk.Style().configure("TButton", padding=6, relief="flat", background="#ccc") btn = ttk.Button(text="Sample") btn.pack() root.mainloop()
- map(style, query_opt=None, **kw)¶
Fragt die dynamischen Werte der angegebenen Option oder Optionen in style ab oder setzt sie.
Jeder Schlüssel in kw ist eine Option, und jeder Wert sollte eine Liste oder ein Tupel sein, die üblicherweise Zustandsangaben enthalten, gruppiert in Tupeln, Listen oder einer anderen bevorzugten Form. Eine Zustandsangabe setzt sich aus einem oder mehreren Zuständen und anschließend einem Wert zusammen.
Ein Beispiel macht es vielleicht verständlicher:
import tkinter from tkinter import ttk root = tkinter.Tk() style = ttk.Style() style.map("C.TButton", foreground=[('pressed', 'red'), ('active', 'blue')], background=[('pressed', '!disabled', 'black'), ('active', 'white')] ) colored_btn = ttk.Button(text="Test", style="C.TButton").pack() root.mainloop()
Beachte, dass die Reihenfolge der (states, value)-Folgen für eine Option eine Rolle spielt. Würde die Reihenfolge in der Option foreground etwa zu
[('active', 'blue'), ('pressed', 'red')]geändert, wäre das Ergebnis ein blauer Vordergrund, wenn das Widget im Zustand active oder pressed ist.Wird die Methode aufgerufen, um die Zuordnung abzufragen, ohne Werte zum Setzen anzugeben, gibt sie ein Dictionary zurück, das jede Option auf ihre Liste von Zustandsangaben abbildet.
Geändert in Version 3.10: Der Wert, der beim Abfragen der Zuordnung zurückgegeben wird, wurde berichtigt.
- lookup(style, option, state=None, default=None)¶
Gibt den für option in style angegebenen Wert zurück.
Ist state angegeben, wird eine Folge aus einem oder mehreren Zuständen erwartet. Ist das Argument default gesetzt, wird es als Ersatzwert verwendet, falls keine Angabe für die Option gefunden wird.
Um zu prüfen, welche Schriftart ein Button voreingestellt verwendet:
from tkinter import ttk print(ttk.Style().lookup("TButton", "font"))
- layout(style, layoutspec=None)¶
Legt das Widget-Layout für den angegebenen style fest. Wird layoutspec weggelassen, wird die Layout-Angabe für den angegebenen Stil zurückgegeben.
Für layoutspec wird, wenn es angegeben ist, eine Liste oder ein anderer Folgentyp erwartet (Zeichenketten ausgenommen), wobei jedes Element ein Tupel sein sollte, dessen erstes Element der Layoutname ist und dessen zweites Element das unter Layouts beschriebene Format haben sollte.
Um das Format zu verstehen, sieh dir das folgende Beispiel an (es soll nichts Sinnvolles tun):
from tkinter import ttk import tkinter root = tkinter.Tk() style = ttk.Style() style.layout("TMenubutton", [ ("Menubutton.background", None), ("Menubutton.button", {"children": [("Menubutton.focus", {"children": [("Menubutton.padding", {"children": [("Menubutton.label", {"side": "left", "expand": 1})] })] })] }), ]) mbtn = ttk.Menubutton(text='Text') mbtn.pack() root.mainloop()
- element_create(elementname, etype, *args, **kw)¶
Erzeugt im aktuellen Theme ein neues Element des angegebenen etype, für den entweder „image“, „from“ oder „vsapi“ erwartet wird. Letzteres ist nur in Tk 8.6 unter Windows verfügbar.
Wird „image“ verwendet, sollte args den voreingestellten Bildnamen gefolgt von statespec/value-Paaren enthalten (das ist die imagespec), und kw kann die folgenden Optionen haben:
- border=padding
padding ist eine Liste aus bis zu vier ganzen Zahlen, die den linken, oberen, rechten und unteren Rand angeben.
- height=height
Gibt eine Mindesthöhe für das Element an. Ist der Wert kleiner als null, wird die Höhe des Grundbildes als Voreinstellung verwendet.
- padding=padding
Gibt den inneren Abstand des Elements an. Ohne Angabe wird der Wert von border verwendet.
- sticky=spec
Gibt an, wie das Bild innerhalb der endgültigen Fläche platziert wird. spec enthält keines oder mehrere der Zeichen „n“, „s“, „w“ oder „e“.
- width=width
Gibt eine Mindestbreite für das Element an. Ist der Wert kleiner als null, wird die Breite des Grundbildes als Voreinstellung verwendet.
Beispiel:
img1 = tkinter.PhotoImage(master=root, file='button.png') img1 = tkinter.PhotoImage(master=root, file='button-pressed.png') img1 = tkinter.PhotoImage(master=root, file='button-active.png') style = ttk.Style(root) style.element_create('Button.button', 'image', img1, ('pressed', img2), ('active', img3), border=(2, 4), sticky='we')
Wird „from“ als Wert von etype verwendet, klont
element_create()ein bestehendes Element. Für args wird ein themename erwartet, aus dem das Element geklont wird, und wahlweise ein Element, aus dem geklont werden soll. Ist dieses Element nicht angegeben, wird ein leeres Element verwendet. kw wird verworfen.Beispiel:
style = ttk.Style(root) style.element_create('plain.background', 'from', 'default')
Wird „vsapi“ als Wert von etype verwendet, erzeugt
element_create()im aktuellen Theme ein neues Element, dessen Aussehen über die Microsoft Visual Styles API gezeichnet wird, die für die Stile mit Themes unter Windows XP und Vista zuständig ist. Für args werden die Visual-Styles-Klasse und der Teil erwartet, wie sie in der Microsoft-Dokumentation angegeben sind, gefolgt von einer optionalen Folge von Tupeln aus ttk-Zuständen und dem entsprechenden Zustandswert der Visual Styles API. kw kann die folgenden Optionen haben:- padding=padding
Gibt den inneren Abstand des Elements an. padding ist eine Liste aus bis zu vier ganzen Zahlen, die den linken, oberen, rechten und unteren Abstand angeben. Sind weniger als vier Elemente angegeben, übernimmt unten den Wert von oben, rechts den von links und oben den von links. Anders gesagt: Eine Liste aus drei Zahlen gibt den linken, den senkrechten und den rechten Abstand an, eine Liste aus zwei Zahlen den waagerechten und den senkrechten Abstand, eine einzelne Zahl denselben Abstand rundum. Diese Option darf nicht mit anderen Optionen gemischt werden.
- margins=padding
Gibt den äußeren Abstand des Elements an. padding ist eine Liste aus bis zu vier ganzen Zahlen, die den linken, oberen, rechten und unteren Abstand angeben. Diese Option darf nicht mit anderen Optionen gemischt werden.
- width=width
Gibt die Breite für das Element an. Ist diese Option gesetzt, wird die Visual Styles API nicht nach der empfohlenen Größe oder dem Teil gefragt. Ist diese Option gesetzt, sollte auch height gesetzt werden. Die Optionen width und height dürfen nicht mit den Optionen padding oder margins gemischt werden.
- height=height
Gibt die Höhe des Elements an. Siehe die Anmerkungen zu width.
Beispiel:
style = ttk.Style(root) style.element_create('pin', 'vsapi', 'EXPLORERBAR', 3, [ ('pressed', '!selected', 3), ('active', '!selected', 2), ('pressed', 'selected', 6), ('active', 'selected', 5), ('selected', 4), ('', 1)]) style.layout('Explorer.Pin', [('Explorer.Pin.pin', {'sticky': 'news'})]) pin = ttk.Checkbutton(style='Explorer.Pin') pin.pack(expand=True, fill='both')
Geändert in Version 3.13: Unterstützung der Element-Factory „vsapi“ hinzugefügt.
- element_names()¶
Gibt ein Tupel der im aktuellen Theme festgelegten Elemente zurück.
- element_options(elementname)¶
Gibt ein Tupel der Optionen von elementname zurück.
- theme_create(themename, parent=None, settings=None)¶
Erzeugt ein neues Theme.
Es ist ein Fehler, wenn themename bereits vorhanden ist. Ist parent angegeben, erbt das neue Theme Stile, Elemente und Layouts vom Eltern-Theme. Sind settings vorhanden, wird für sie dieselbe Syntax erwartet wie bei
theme_settings().
- theme_settings(themename, settings)¶
Setzt das aktuelle Theme vorübergehend auf themename, wendet die angegebenen settings an und stellt dann das vorherige Theme wieder her.
Jeder Schlüssel in settings ist ein Stil, und jeder Wert kann die Schlüssel ‚configure‘, ‚map‘, ‚layout‘ und ‚element create‘ enthalten, für die dasselbe Format erwartet wird, wie es die Methoden
Style.configure(),Style.map(),Style.layout()undStyle.element_create()jeweils angeben.Lass uns als Beispiel die Combobox für das voreingestellte Theme etwas verändern:
from tkinter import ttk import tkinter root = tkinter.Tk() style = ttk.Style() style.theme_settings("default", { "TCombobox": { "configure": {"padding": 5}, "map": { "background": [("active", "green2"), ("!disabled", "green4")], "fieldbackground": [("!disabled", "green3")], "foreground": [("focus", "OliveDrab1"), ("!disabled", "OliveDrab2")] } } }) combo = ttk.Combobox().pack() root.mainloop()
- theme_names()¶
Gibt ein Tupel aller bekannten Themes zurück.
- theme_use(themename=None)¶
Ist themename nicht angegeben, wird das verwendete Theme zurückgegeben. Andernfalls wird das aktuelle Theme auf themename gesetzt, alle Widgets werden aktualisiert und ein Ereignis <<ThemeChanged>> wird ausgelöst.
Layouts¶
Ein Layout kann einfach None sein, wenn es keine Optionen annimmt, oder ein Dictionary von Optionen, das angibt, wie das Element angeordnet wird. Der Layout-Mechanismus verwendet eine vereinfachte Fassung des Geometrie-Managers pack: Ausgehend von einem anfänglichen Hohlraum wird jedem Element eine Fläche zugewiesen.
Die gültigen Optionen und Werte sind:
- side: whichside
Gibt an, an welcher Seite des Hohlraums das Element platziert wird: oben, rechts, unten oder links. Wird die Angabe weggelassen, nimmt das Element den gesamten Hohlraum ein.
- sticky: nswe
Gibt an, wo das Element innerhalb der ihm zugewiesenen Fläche platziert wird.
- unit: 0 or 1
Auf 1 gesetzt, führt dies dazu, dass das Element und alle seine Nachkommen für
Widget.identify()und Verwandte als ein einzelnes Element behandelt werden. Das wird für Dinge wie Scrollbar-Schieber mit Griffen verwendet.- children: [sublayout… ]
Gibt eine Liste von Elementen an, die innerhalb des Elements platziert werden. Jedes Element ist ein Tupel (oder ein anderer Folgentyp), dessen erstes Element der Layoutname ist und dessen zweites ein Layout ist.
Weitere Widgets¶
Die folgenden Widgets mit Themes vervollständigen den Satz der Widgets in tkinter.ttk. Jedes ist das Gegenstück mit Themes zum gleichnamigen klassischen tkinter-Widget und erbt die gemeinsamen Methoden von Widget.
- class tkinter.ttk.Button(master=None, **kw)¶
Das Ttk-Widget
Buttonzeigt ein Textlabel und/oder ein Bild an und führt beim Drücken einen Befehl aus. Es ist das Gegenstück mit Themes zutkinter.Buttonund erbt die gemeinsamen Widget-Methoden vonWidget.- invoke()¶
Führt den zum Button gehörenden Befehl aus und gibt sein Ergebnis zurück.
- class tkinter.ttk.Checkbutton(master=None, **kw)¶
Das Ttk-Widget
Checkbuttondient dazu, eine boolesche Variable zu steuern, die ein- und ausgeschaltet wird. Es ist das Gegenstück mit Themes zutkinter.Checkbuttonund erbt die gemeinsamen Widget-Methoden vonWidget.- invoke()¶
Schaltet den Button zwischen seinen Zuständen ausgewählt und nicht ausgewählt um, führt den zum Button gehörenden Befehl aus und gibt sein Ergebnis zurück.
- class tkinter.ttk.Entry(master=None, widget=None, **kw)¶
Das Ttk-Widget
Entryzeigt eine einzeilige Textzeichenkette an und erlaubt dem Benutzer, sie zu bearbeiten. Es ist das Gegenstück mit Themes zutkinter.Entryund erbt die gemeinsamen Widget-Methoden vonWidgetsowie die Methoden zum Bearbeiten vontkinter.Entry.- bbox(index)¶
Gibt ein Tupel
(x, y, width, height)zurück, das das umschließende Rechteck des Zeichens am angegebenen index angibt.Dies verdeckt das geerbte
Misc.bbox(). Verwendegrid_bbox()für das umschließende Rechteck des Rasters.
- identify(x, y)¶
Gibt den Namen des Elements unter dem durch x und y gegebenen Punkt zurück oder die leere Zeichenkette, wenn an dieser Stelle kein Element vorhanden ist.
- validate()¶
Erzwingt die Prüfung des Eingabefeldes und gibt
Truezurück, wenn die Prüfung erfolgreich war, sonstFalse.
- class tkinter.ttk.Frame(master=None, **kw)¶
Das Ttk-Widget
Frameist ein Behälter, der dazu dient, andere Widgets zu gruppieren und anzuordnen. Es ist das Gegenstück mit Themes zutkinter.Frameund erbt die gemeinsamen Widget-Methoden vonWidget.
- class tkinter.ttk.Label(master=None, **kw)¶
Das Ttk-Widget
Labelzeigt ein Textlabel und/oder ein Bild an. Es ist das Gegenstück mit Themes zutkinter.Labelund erbt die gemeinsamen Widget-Methoden vonWidget.
- class tkinter.ttk.Labelframe(master=None, **kw)¶
Das Ttk-Widget
Labelframeist ein Behälter, der einen Rand und ein Titel-Label um seinen Inhalt zeichnet. Es ist das Gegenstück mit Themes zutkinter.LabelFrameund erbt die gemeinsamen Widget-Methoden vonWidget.
- class tkinter.ttk.Menubutton(master=None, **kw)¶
Das Ttk-Widget
Menubuttonzeigt ein Textlabel und/oder ein Bild an und klappt beim Drücken ein Menü auf. Es ist das Gegenstück mit Themes zutkinter.Menubuttonund erbt die gemeinsamen Widget-Methoden vonWidget.
- class tkinter.ttk.OptionMenu(master, variable, default=None, *values, **kwargs)¶
Das Ttk-Widget
OptionMenuist einMenubutton, der ein Menü einander ausschließender Auswahlmöglichkeiten aufklappt. variable ist die Variable, die den derzeit ausgewählten Wert verfolgt, default ist der zu Beginn zu setzende Wert, und values sind die Einträge, die im Menü angezeigt werden. Mit dem Schlüsselwortargument command kann ein aufrufbares Objekt angegeben werden, das bei jeder Änderung der Auswahl mit dem ausgewählten Wert aufgerufen wird. Das Schlüsselwortargument style legt den Stil fest, den der zugrunde liegende Menubutton verwendet. Das Schlüsselwortargument direction legt fest, wo das Menü relativ zum Menubutton erscheint (einer der Werte'above','below'(die Voreinstellung),'left','right'oder'flush'). Das Schlüsselwortargument name legt den Namen des Tk-Widgets fest.Ersetzt die Einträge des Menüs durch values. Ist default angegeben, wird es außerdem als aktueller Wert von variable gesetzt.
- destroy()¶
Zerstört dieses Widget und das zugehörige Menü.
Geändert in Version 3.14: Unterstützung für das Schlüsselwortargument name hinzugefügt.
- class tkinter.ttk.Panedwindow(master=None, **kw)¶
Das Ttk-Widget
Panedwindowzeigt mehrere Unterfenster an, die entweder senkrecht oder waagerecht gestapelt sind. Der Benutzer kann die Größen der Unterfenster zueinander anpassen, indem er die Trennleiste zwischen den Flächen zieht. Es ist das Gegenstück mit Themes zutkinter.PanedWindowund erbt die gemeinsamen Widget-Methoden vonWidgetsowie die Methodenadd()undpanes()vontkinter.PanedWindow.- insert(pos, child, **kw)¶
Fügt an der Position pos eine Fläche ein, die child enthält. pos ist entweder die Zeichenkette
'end', ein ganzzahliger Index oder der Name eines verwalteten Unterfensters. Wird child bereits vom Panedwindow verwaltet, wird es an die angegebene Position verschoben. Alle Schlüsselwortargumente setzen Optionen der Fläche.
- forget(child)¶
Entfernt child aus den Flächen, wobei child entweder ein ganzzahliger Index oder der Name eines verwalteten Unterfensters sein kann.
Dies verdeckt das geerbte
forget()des Geometrie-Managers. Verwendepack_forget(),grid_forget()oderplace_forget(), um das Widget selbst aus seinem Manager zu entfernen.
- pane(pane, option=None, **kw)¶
Fragt die Optionen der angegebenen pane ab oder ändert sie, wobei pane entweder ein ganzzahliger Index oder der Name eines verwalteten Unterfensters ist. Sind keine Argumente angegeben, wird ein Dictionary der Optionswerte der Fläche zurückgegeben. Ist option angegeben, wird der Wert dieser Option zurückgegeben. Andernfalls werden die als Schlüsselwortargumente angegebenen Optionen auf die entsprechenden Werte gesetzt.
- sashpos(index, newpos=None)¶
Ist newpos angegeben, wird die Position der Trennleiste mit der Nummer index gesetzt und ihre neue Position zurückgegeben. Dabei können die Positionen benachbarter Trennleisten angepasst werden, um sicherzustellen, dass die Positionen monoton steigen. Die Positionen sind außerdem auf den Bereich zwischen 0 und der Gesamtgröße des Widgets beschränkt. Wird newpos weggelassen, wird die aktuelle Position der Trennleiste zurückgegeben.
- class tkinter.ttk.Radiobutton(master=None, **kw)¶
Das Ttk-Widget
Radiobuttondient als Teil einer Gruppe dazu, eine einzelne gemeinsame Variable zu steuern, indem einer von mehreren einander ausschließenden Werten ausgewählt wird. Es ist das Gegenstück mit Themes zutkinter.Radiobuttonund erbt die gemeinsamen Widget-Methoden vonWidget.- invoke()¶
Setzt die Variable der Option auf den Wert des Buttons, wählt den Button aus, führt den zum Button gehörenden Befehl aus und gibt sein Ergebnis zurück.
- class tkinter.ttk.Scale(master=None, **kw)¶
Das Ttk-Widget
Scalezeigt einen Schieber an, mit dem der Benutzer einen Zahlenwert aus einem Bereich auswählen kann, indem er den Schieber entlang einer Rille bewegt. Es ist das Gegenstück mit Themes zutkinter.Scaleund erbt die gemeinsamen Widget-Methoden vonWidget.- configure(cnf=None, **kw)¶
Ändert die Widget-Optionen oder fragt sie ab, wie
Widget.configure. Zusätzlich beschneidet diese Methode die Wertefromundto, sodass der aktuelle Wert innerhalb des von ihnen festgelegten Bereichs bleibt.Geändert in Version 3.9: Gibt jetzt den Konfigurationswert zurück, wie
Widget.configure.
- get(x=None, y=None)¶
Gibt den aktuellen Wert der Scale zurück. Sind x und y angegeben, wird stattdessen der Wert zurückgegeben, der zur Pixelkoordinate x, y gehört.
- class tkinter.ttk.Scrollbar(master=None, **kw)¶
Das Ttk-Widget
Scrollbarsteuert den Ausschnitt eines zugehörigen scrollbaren Widgets wie einesTreeview,Entryodertkinter.Text. Es ist das Gegenstück mit Themes zutkinter.Scrollbarund erbt die gemeinsamen Widget-Methoden vonWidgetsowie die Methodenset()undget()vontkinter.Scrollbar.
- class tkinter.ttk.Separator(master=None, **kw)¶
Das Ttk-Widget
Separatorzeigt eine waagerechte oder senkrechte Trennlinie an. Es hat kein unmittelbares Gegenstück intkinterund erbt die gemeinsamen Widget-Methoden vonWidget.
- class tkinter.ttk.Sizegrip(master=None, **kw)¶
Das Ttk-Widget
Sizegripzeigt einen Griff an, mit dem der Benutzer die Größe des umgebenden Toplevel-Fensters ändern kann, indem er den Griff drückt und zieht. Üblicherweise wird es in der unteren rechten Ecke platziert. Es hat kein unmittelbares Gegenstück intkinterund erbt die gemeinsamen Widget-Methoden vonWidget.
- class tkinter.ttk.LabeledScale(master=None, variable=None, from_=0, to=10, **kw)¶
Ein
Frame, der eineScaleund einLabelenthält, das den aktuellen Wert der Scale anzeigt. variable ist dieIntVar, die die Scale verfolgt (wird eine erzeugt, wenn sie nicht angegeben ist), und from_ und to legen den Bereich der Scale fest.- destroy()¶
Zerstört dieses Widget und entfernt den Verfolgungs-Callback, der auf der zugehörigen Variablen registriert ist.
- class tkinter.ttk.LabelFrame(master=None, **kw)¶
Alias von
Labelframe, aus Gründen der Namenskompatibilität mittkinter.LabelFramebeibehalten.
- class tkinter.ttk.PanedWindow(master=None, **kw)¶
Alias von
Panedwindow, aus Gründen der Namenskompatibilität mittkinter.PanedWindowbeibehalten.