tkinter - ttk.Notebook

ttk.Notebook

ttk.Notebook erzeugen

nb = ttk.Notebook(parent, Optionen)

OptionsnameBeschreibung
height, widthHöhe, Breite in Pixeln
paddingExtra Platz um das Notebook, Anzahl der Parameter bestimmen, welcher Platz gemeint ist, es sind maximal 4 Angaben erlaubt: links-oben-rechts-unten oder links-oben/unten-rechts oder horizontal-vertikal oder einfach nur Randplatz

ttk.Notebook kennt die Standardoptionen: class_, cursor, style und takefocus

Notebook Tabs

Die folgende Tabelle zeigt die Tab-Optionen. Diese werden bei nb.add(…) angegeben, siehe unten:

OptionsnameBeschreibung
statetk.NORMAL, tk.HIDDEN (versteckt) oder tk.DISABLED
stickyPositionierung: Kombinationen aus tk.N, tk.S, tk.W und tk.E
paddingPlatz zwischen Notebook und Tab-Fenster
textTitel des Tabs
imageBild im Titel
compoundAnordnung von Text und Bild im Titelbereich, wenn beides vorhanden ist. Siehe Labeloptionen
underlinePositiver ganzzahlige Index, der den zu unterstreichenden Buchstaben referenziert.

Das folgende Programm stellt ein Notebook vor:

Bild der Anwendung
import tkinter as tk
from tkinter import ttk

class A(tk.Tk):
    def __init__(self):
        super().__init__()
        self.geometry('400x400')
        self._createWidgets()

    def _createWidgets(self):
        nb = ttk.Notebook(self)
        nb.pack(fill=tk.BOTH, expand=tk.YES)
        f = ttk.Frame(nb, relief=tk.SUNKEN)
        ttk.Label(f, text='Erster Tab').pack(fill=tk.BOTH, expand=tk.YES)
        nb.add(f, text='Test1', sticky=tk.S)
        
        f = ttk.Frame(nb, relief=tk.SUNKEN)
        ttk.Label(f, text='Zweiter Tab').pack(fill=tk.BOTH, expand=tk.YES)
        nb.add(f, text='Test2', sticky=tk.N+tk.S, padding=5)

        f = ttk.Frame(nb, relief=tk.SUNKEN)
        ttk.Label(f, text='Dritter Tab').pack(fill=tk.BOTH, expand=tk.YES)
        nb.add(f, text='Test3', padding=5)
        
if __name__ == '__main__':
    window = A()
    window.mainloop()

Notebook-Methoden

tabId:

FunktionParameterRückgabewertBeschreibung
nb.add(child, optionen) child: Widget wie etwa ein Frame, optionen: Tab-Optionen - child wird als neuer Tab angehängt. War der Tab dort lediglich versteckt, dann wird er wieder an der ursprünglichen Stelle sichtbar
nb.enable_traversal()-- Fügt ergänzende Tasturbindungen hinzu: Strg-Tab: Nächster Tab, Shift-Strg-Tab: vorheriger Tab, Alt-X wählt einen Tab aus, der mit text und underline entsprechend markiert wurde. x ist dann der unterstrichene Buchstabe
nb.forget(tabId)tabId-Tab wird entfernt
nb.hide(tabId)tabId- Versteckt den Tab mit gegebener ID. Kann mit add(…) wieder sichtbar gemacht werden
nb.identify(x, y)PositionName eines Tabs oder leerer String Gibt den Namen eines Tabs an der Position zurück, oder einen leeren String. (TODO: Zur Zeit nicht vollständig unterstützt)
nb.index(tabId)tabIdIndex oder Anzahl Zu einer gegebenen tabId wird der Index des Tabs zurückgegeben. Der String 'end' fragt die Anzahl der Tabs ab
nb.insert(tabId, child,optionen)tabId, child: Widget, optionen: Tab-Optionen -Fügt einen neuen Tab an einer angegebenen Position ein. Ist der Tab schon vorhanden, dann wird er an die entsprechnde Position verschoben.
nb.select(tabId)tabId (optional)Nichts oder Fenstername in Tcl/Tk Schreibweise Ohne Argument: Fenstername wird zurückgegeben, Mit tabId wird dieser Tab ausgewählt
nb.tab(tabId, option=None, …)tabId, option: Tab-Option als Optionsname oder Schlüssel-Wert-Paare nichts, Wert oder Dictionary Setzt Tab-Optionen für einen Tab. Kann eine Option abfragen: option='text' gibt den Wert zurück. Ohne Optionen/Keyword liefert die Funktion ein Dictionary mit allen gesetzten Optionen
nb.tabs()-Liste von Fensternamen in Tcl/Tk-Schreibweise Gibt eine Liste von Tab-Fensternamen zurück. Dieses ist zur Zeit die einzige Möglichkeit, an den Tabnamen eines Tabs zu kommen.

Es werden ferner die Standardmethoden:

unterstützt.

Virtuelle Ereignisse

Notebook kennt das virtuelle Ereignis '<<NotebookTabChanged>>' -- ein neuer Tab wurde ausgewählt.

Referenzen

Siehe Auch

https://www.tcl.tk/man/tcl8.7/TkCmd/ttk_notebook.html