tkinter – Widget Fomatierung

Das Widget für das Tkinter-Menü

Mit dem Menü-Widget werden Toplevel-, Pulldown- und Popup-Menüs implementiert.
Wann wird das Menü-Widget verwendet?

Dieses Widget wird verwendet, um alle Arten von Menüs anzuzeigen, die von einer Anwendung verwendet werden. Da dieses Widget nach Möglichkeit nativen Code verwendet, sollten Sie nicht versuchen, Menüs mithilfe von Schaltflächen und anderen Tkinter-Widgets zu fälschen.
Muster #

Toplevel-Menüs werden direkt unter der Titelleiste des Stammverzeichnisses oder unter anderen Toplevel-Fenstern (oder bei Macintosh am oberen Bildschirmrand) angezeigt. Um ein Toplevel-Menü zu erstellen, erstellen Sie eine neue Menüinstanz und fügen mithilfe von add-Methoden Befehle und andere Menüeinträge hinzu.

Alle Tkinter-Standard-Widgets bieten einen grundlegenden Satz von „Stil“ -Optionen, mit denen Sie Elemente wie Farben, Schriftarten und andere visuelle Aspekte jedes Widgets ändern können.
Farben #

Bei den meisten Widgets können Sie die Widget- und Textfarben mithilfe der Hintergrund- und Vordergrundoptionen festlegen. Um eine Farbe anzugeben, können Sie entweder einen Farbnamen verwenden oder die Farbkomponenten Rot, Grün und Blau (RGB) explizit angeben.
Farbnamen #

Tkinter enthält eine Farbdatenbank, die Farbnamen den entsprechenden RGB-Werten zuordnet. Diese Datenbank enthält gebräuchliche Namen wie Rot, Grün, Blau, Gelb und LightBlue, aber auch mehr exotische Dinge wie Mokassin, PeachPuff usw.

In einem X-Fenstersystem werden die Farbnamen vom X-Server definiert. Sie können möglicherweise eine Datei namens xrgb.txt finden, die eine Liste mit Farbnamen und die entsprechenden RGB-Werte enthält. Bei Windows- und Macintosh-Systemen ist die Farbnamentabelle in Tk integriert.

Unter Windows können Sie auch die Windows-Systemfarben verwenden (diese können vom Benutzer über die Systemsteuerung geändert werden):

SystemActiveBorder, SystemActiveCaption, SystemAppWorkspace, SystemBackground, SystemButtonFace, SystemButtonHighlight, SystemButtonShadow, SystemButtonText, SystemCaptionText, SystemDisabledText, SystemHighlight, SystemHighlightText, SystemInactiveBorder, SystemInactiveCaption, SystemInactiveCaptionText, SystemMenu, SystemMenuText, SystemScrollbar, SystemWindow, SystemWindowFrame, SystemWindowText.

Auf dem Macintosh stehen folgende Systemfarben zur Verfügung:

SystemButtonFace, SystemButtonFrame, SystemButtonText, SystemHighlight, SystemHighlightText, SystemMenu, SystemMenuActive, SystemMenuActiveText, SystemMenuDisabled, SystemMenuText, SystemWindowBody.

Bei Farbnamen wird die Groß- und Kleinschreibung nicht berücksichtigt. Viele (aber nicht alle) Farbnamen sind auch mit oder ohne Leerzeichen zwischen den Wörtern verfügbar. Beispielsweise geben “lightblue”, “light blue”, and “Light Blue” alle dieselbe Farbe an.
RGB-Spezifikationen #

Wenn Sie eine Farbe explizit angeben müssen, können Sie eine Zeichenfolge mit dem folgenden Format verwenden:

#RRGGBB

RR, GG, BB sind hexadezimale Darstellungen der roten, grünen und blauen Werte. Das folgende Beispiel zeigt, wie Sie ein Farb-3-Tupel in eine Tk-Farbspezifikation konvertieren können:

tk_rgb = "#%02x%02x%02x" % (128, 192, 200)

Tk unterstützt auch die Formulare „#RGB“ und „#RRRRGGGGBBBBB“, um jeden Wert mit 16 bzw. 65536 Stufen anzugeben.

Sie können die Widgetmethode winfo_rgb verwenden, um eine Farbzeichenfolge (entweder einen Namen oder eine RGB-Spezifikation) in ein 3-Tupel zu übersetzen:

rgb = widget.winfo_rgb("red") 
red, green, blue = rgb[0]/256, rgb[1]/256, rgb[2]/256

Beachten Sie, dass winfo_rgb 16-Bit-RGB-Werte zwischen 0 und 65535 zurückgibt. Um sie in den allgemeineren Bereich von 0-255 abzubilden, müssen Sie jeden Wert durch 256 teilen (oder um 8 Bit nach rechts verschieben).
Schriftarten #

Widgets, mit denen Sie Text auf die eine oder andere Weise anzeigen können, können Sie auch angeben, welche Schriftart verwendet werden soll. Alle Widgets bieten angemessene Standardwerte, und Sie müssen selten die Schriftart für einfachere Elemente wie Beschriftungen und Schaltflächen angeben.

Schriftarten werden normalerweise mit der Option für das Schriftarten-Widget angegeben. Tkinter unterstützt eine Reihe verschiedener Schriftarten-Deskriptortypen:

  • Schriftbeschreibungen
  • Benutzerdefinierte Schriftnamen
  • Systemschriftarten
  • X-Schriftbeschreibungen

 Schriftbeschreibungen

Ab Tk 8.0 unterstützt Tkinter plattformunabhängige Schriftdeskriptoren. Sie können eine Schrift als Tupel angeben, die einen Familiennamen, eine Punkthöhe und optional eine Zeichenfolge mit einem oder mehreren Stilen enthält. Beispiele:  

("Times", 10, "bold") 
("Helvetica", 10, "bold italic")
("Symbol", 8)

Um die Standardgröße und den Standardstil zu erhalten, können Sie den Namen der Schriftart als einzelne Zeichenfolge angeben. Wenn der Familienname keine Leerzeichen enthält, können Sie der Zeichenfolge selbst auch Größe und Stile hinzufügen:

"Times 10 bold" 
"Helvetica 10 bold italic"
"Symbol 8"

Auf den meisten Windows-Plattformen sind folgende Familien verfügbar:

Arial (corresponds to Helvetica), Courier New (Courier), Comic Sans MS, Fixedsys, MS Sans Serif, MS Serif, Symbol, System, Times New Roman (Times), and Verdana:

Beachten Sie, dass Sie, wenn der Familienname Leerzeichen enthält, die oben beschriebene Tupelsyntax verwenden müssen.

Die verfügbaren Stile sind normal, bold, roman, italic, underline, and overstrike. ( = normal, fett, römisch, kursiv, unterstrichen und überstrichen)

Tk 8.0 ordnet Courier, Helvetica und Times automatisch den entsprechenden Familiennamen auf allen Plattformen zu. Darüber hinaus kann eine Schriftartspezifikation niemals unter Tk 8.0 ausfallen. Wenn Tk keine exakte Übereinstimmung finden kann, wird versucht, eine ähnliche Schriftart zu finden. Wenn dies fehlschlägt, greift Tk auf eine plattformspezifische Standardschriftart zurück. Tk ‚Vorstellung von „ähnlich“ ist wahrscheinlich nicht Ihrer eigenen Meinung, also sollten Sie sich nicht zu sehr auf diese Funktion verlassen.

Schriftnamen

Darüber hinaus können Sie in Tk 8.0 benannte Schriftarten erstellen und deren Namen verwenden, wenn Sie Schriftarten für die Widgets festlegen.

Das tkFont-Modul stellt eine Font-Klasse bereit, mit der Sie Fontinstanzen erstellen können. Sie können eine solche Instanz überall dort verwenden, wo Tkinter einen Schriftartbezeichner akzeptiert. Sie können auch eine Schriftarteninstanz verwenden, um Schriftmetriken abzurufen, einschließlich der Größe, die eine bestimmte Zeichenfolge in dieser Schrift einnimmt.

tkFont.Font(family="Times", size=10, weight=tkFont.BOLD)
tkFont.Font(family="Helvetica", size=10, weight=tkFont.BOLD,
            slant=tkFont.ITALIC)
tkFont.Font(family="Symbol", size=8)

Wenn Sie eine benannte Schriftart ändern (mithilfe der Methode config), werden die Änderungen automatisch auf alle Widgets übertragen, die die Schriftart verwenden.

Der Font-Konstruktor unterstützt die folgenden Stiloptionen (Beachten Sie, dass die Konstanten im Modul tkFont definiert sind):

family
Schriftfamilie

size
Schriftgröße in Punkten. Verwenden Sie ein Negativ, um die Größe in Pixel anzugeben

weight
Schriftdicke
Verwenden Sie NORMAL oder BOLD. Die Standardeinstellung ist NORMAL

underline
Schrift unterstrichen. Bei 1 (wahr) wird die Schrift unterstrichen. Der Standardwert ist 0

overstrike
Schriftart durchgestrichen. Bei 1 (wahr) wird eine Linie über dem mit dieser Schriftart geschriebenen Text gezeichnet. Der Standardwert ist 0 (falsch).

Systemschriftarten

Tk unterstützt auch systemspezifische Schriftnamen. Unter X sind dies normalerweise Schriftaliasnamen wie Fixed, 6×10 usw.

Unter Windows gehören ansi, ansifixed, device, oemfixed, system und systemfixed Beachten Sie, dass es sich bei den Systemschriftarten um vollständige Schriftnamen und nicht um Familiennamen handelt. Sie können nicht mit Größen- oder Stilattributen kombiniert werden. Aus Gründen der Portabilität sollten Sie diese Namen möglichst nicht verwenden.

X-Schriftbeschreibungen

X-Deskriptoren sind Zeichenfolgen mit dem folgenden Format (die Sternchen stellen Felder dar, die normalerweise nicht relevant sind.

-*-family-weight-slant-*–*-size-*-*-*-*-charset

Die Schriftfamilie besteht normalerweise aus Times, Helvetica, Courier oder Symbol.

Das Gewicht ist entweder fett oder normal. Slant ist entweder R für „Roman“ (normal), I für Kursiv oder O für Schräg (in der Praxis ist dies nur ein anderes Wort für Kursiv).

Größe ist die Höhe der Schrift in Dezimalpunkten (d. H. Punkte multipliziert mit 10). Normalerweise gibt es 72 Punkte pro Zoll, aber einige Displays mit niedriger Auflösung verwenden möglicherweise größere „logische“ Punkte, um sicherzustellen, dass kleine Schriftarten noch lesbar sind. Der Zeichensatz ist schließlich normalerweise ISO8859-1 (ISO Latin 1), kann jedoch andere Werte für einige Schriftarten enthalten.

Der folgende Deskriptor fordert eine 12-Punkt-Fettschrift mit Times-Schrift unter Verwendung des ISO Latin 1-Zeichensatzes an:
-*-Times-Bold-R-*–*-120-*-*-*-*-ISO8859-1

Wenn Sie sich nicht für den Zeichensatz interessieren oder eine Schriftart wie Symbol verwenden, die über einen speziellen Zeichensatz verfügt, können Sie ein einzelnes Sternchen als letzte Komponente verwenden:

-*-Symbol-*-*-*--*-80-*

Ein typischer X-Server unterstützt mindestens Times, Helvetica, Courier und einige weitere Schriftarten in Größen wie 8, 10, 12, 14, 18 und 24 Punkten sowie in normalen, fetten und kursiven (Times) oder schrägen ( Helvetica, Courier) Varianten. Die meisten Server unterstützen auch frei skalierbare Schriftarten. Sie können Programme wie xlsfonts und xfontsel verwenden, um zu überprüfen, auf welche Schriftarten Sie auf einem bestimmten Server zugreifen können.

Textformatierung #

Während Textbeschriftungen und Schaltflächen normalerweise eine einzelne Textzeile enthalten, unterstützt Tkinter auch mehrere Zeilen. Um den Text in mehrere Zeilen zu teilen, fügen Sie bei Bedarf einfach Zeilenumbrüche (\ n) ein.

Standardmäßig sind die Linien zentriert. Sie können dies ändern, indem Sie die Justify auf left oder right setzen. Der Standardwert ist center.

Sie können auch die Option wraplength verwenden, um eine maximale Breite festzulegen, und das Widget den Text auf mehrere Zeilen alleine umbrechen lassen. Tkinter versucht, Whitespace zu umbrechen, aber wenn das Widget zu schmal ist, können einzelne Wörter über Zeilen hinweg gebrochen werden.

Alle Tkinter-Widgets haben einen Rahmen (der für einige Widgets jedoch standardmäßig nicht sichtbar ist). Der Rand besteht aus einem optionalen 3D-Relief und einem Fokushervorhebungsbereich.

Die Reliefeinstellungen steuern, wie der Widgetrand gezeichnet wird:

borderwidth (oder bd)

Dies ist die Breite des Rahmens in Pixel. Die meisten Widgets haben eine Standardrandbreite von ein oder zwei Pixeln. Es gibt kaum einen Grund, die Grenze breiter zu machen.
relief – Diese Option steuert, wie der 3D-Rand gezeichnet wird. Es kann zwischen SUNKEN, RAISED, GROOVE, RIDGE und FLAT eingestellt werden.

Fokus-Highlights

Die Hervorhebungseinstellungen steuern, wie angegeben wird, dass das Widget (oder eines seiner untergeordneten Elemente) den Tastaturfokus hat. In den meisten Fällen ist der hervorgehobene Bereich eine Grenze außerhalb des Reliefs. Die folgenden Optionen steuern, wie dieser zusätzliche Rahmen gezeichnet wird:

highlightcolor =Hervorhebungsfarbe

Mit dieser Option wird der hervorgehobene Bereich gezeichnet, wenn das Widget den Tastaturfokus hat. Normalerweise ist es schwarz oder eine andere Kontrastfarbe.

highlightbackground
Diese Option wird verwendet, um den Hervorhebungsbereich zu zeichnen, wenn das Widget keinen Fokus hat. Normalerweise entspricht dies dem Widget-Hintergrund.

Glanzdicke
Diese Option gibt die Breite des hervorgehobenen Bereichs in Pixeln an. Bei Widgets, die den Tastaturfokus annehmen können, handelt es sich normalerweise um ein oder zwei Pixel.

Cursor =Mauszeiger

Diese Option steuert, welcher Mauszeiger verwendet werden soll, wenn die Maus über das Widget bewegt wird.  Wenn diese Option nicht festgelegt ist, verwendet das Widget den gleichen Mauszeiger wie sein übergeordnetes Element.  Beachten Sie, dass einige Widgets, einschließlich der Widgets „Text“ und „Entry“, diese Option standardmäßig festlegen.