tkinter – Grundinfos

Das Tkinter-Modul („Tk-Schnittstelle“) ist die Standard-Python-Schnittstelle für das Tk-GUI-Toolkit

Tk und Tkinter sind auf den meisten Unix-Plattformen sowie auf Windows- und Macintosh-Systemen verfügbar. Ab der Version 8.0 bietet Tk auf allen Plattformen ein natives Erscheinungsbild. Sie können überprüfen, ob tkinter ordnungsgemäß auf Ihrem System installiert ist, indem Sie
python -m tkinter
über die Befehlszeile ausführen. Dies sollte ein Fenster öffnen, das eine einfache Tk-Oberfläche zeigt.

Eine Benutzeroberfläche ist in der Regel aus verschiedenen grafischen Komponenten aufgebaut. Oft findet man darunter Schriftfelder (Label-Komponenten), Eingabefelder (Entry-Komponenten) und Schaltflächen (Button-Komponenten).

Grafische Elemente (Hauptfenster, Knöpfe, Text, Eingabefelder …) einer GUI werden Widgets genannt (window gadgets). Ein Widget kann aus mehreren Widgets zusammengesetzt sein. Jedes Widget entspricht einer Klasse (Bauplan für Objekte), aus der dann die Objekte gebildet werden. Jedes Objekt besitzt Attribute (Daten des Objekts) und Methoden (Funktionen) des Objekts.

Eine GUI kann man sich als Baumstruktur vorstellen. Die Wurzel ist das Hauptfenster, ein Objekt der Klasse Tk. In der dritten Zeile wird diese Objekt mit dem (beliebigen) Namen „mainWin“ erstellt. In der letzten Zeile wird dann die Methode(Funktion) mainloop() des Objekts mainWin aufgerufen. Dabei werden Objekt und Methode mit einem Punkt verbunden.

In der vierten Zeile wird ein Ttk­Objekt mit dem Namen label_1 erzeugt. Dieses Objekt ist ein „Kind“ des Hauptfensters. Dies wird durch den ersten Eintrag (Parameter) in der Klammer festgelegt. Die Beschriftung des Labels wird beim zweiten Parameter in der Variablen „text“ hinterlegt. Dem Widget ttk.Label können noch andere Parameter übergeben werden (siehe später). Das Objekt wurde zwar erzeugt, ist aber noch nicht sichtbar, da Tk nicht klar ist wie das Widget in Bezug zum Hauptfenster platziert werden soll.

Unterschiede zwischen Python 2 und 3

Tkinter ist zwischen Python 2 und Python 3 weitgehend unverändert, mit dem Hauptunterschied, dass das Tkinter-Paket und die Module umbenannt wurden.

Importieren in Python 2.x #

In python 2.x heißt das tkinter-Paket Tkinter , und verwandte Pakete haben eigene Namen. Das folgende Beispiel zeigt einen typischen Satz von Importanweisungen für Python 2.x:

import Tkinter as tk
import tkFileDialog as filedialog
import ttk

Importieren in Python 3.x #

Obwohl sich die Funktionalität zwischen Python 2 und 3 nicht viel geändert hat, haben sich die Namen aller tkinter-Module geändert. Das Folgende ist ein typischer Satz von Importanweisungen für Python 3.x:

import tkinter as tk
from tkinter import filedialog
from tkinter import ttk

Das Beispiel ausführen

Das Tkinter-Modul exportiert nur Widget-Klassen und zugehörige Konstanten, sodass Sie in den meisten Fällen das From-In-Formular sicher verwenden können. Wenn Sie es vorziehen, einige Eingaben nicht zu speichern und trotzdem speichern möchten, können Sie import-as verwenden:

Um das Programm auszuführen, führen Sie das Skript wie gewohnt aus:

$ python hello1.py

Das folgende Fenster erscheint. (Linux und Windows-Ansicht)

Um das Programm zu stoppen, schließen Sie einfach das Fenster.

Python-Programme mit einer grafischen Benutzeroberfläche kann man wie alle Python-Programme mit der Dateinamenserweiterung .py abspeichern.

Wenn man Python-Programme unter Windows ausführt, dann ist es günstiger, die Dateinamenserweiterung .pyw zu benutzen.

Python-Programme mit den Dateinamenserweiterungen .py und .pyw verhalten sich unter Windows unterschiedlich, wenn sie mit einem Doppelklick gestartet werden. Bei der .py-Version wird der Python-Interpreter python.exe, bei der .pyw-Version der Python-Interpreter pythonw.exe aufgerufen. Während der Python-Interpreter python.exe zunächst ein Konsole-Fenster öffnet und anschließend erst das GUI-Fenster erzeugt, startet der Python-Interpreter pythonw.exe nur das GUI-Fenster. Da man nur an diesem GUI-Fenster interessiert ist, sollte man (unter Windows) die .pyw-Version benutzen.

Details

Wir beginnen mit dem Import des Tkinter-Moduls. Es enthält alle Klassen, Funktionen und andere Dinge, die zum Arbeiten mit dem Tk-Toolkit erforderlich sind. In den meisten Fällen können Sie einfach alles aus Tkinter in den Namensraum Ihres Moduls importieren:

from tkinter import *

Um Tkinter zu initialisieren, müssen wir ein Tk-Wurzel-Widget erstellen. Dies ist ein gewöhnliches Fenster mit einer Titelleiste und einer anderen von Ihrem Fenstermanager bereitgestellten Verzierung. Sie sollten nur ein Root-Widget für jedes Programm erstellen. Dieses Widget muss vor allen anderen Widgets erstellt werden.

root = Tk()

Als Nächstes erstellen wir ein Label-Widget als untergeordnetes Element für das Stammfenster:

w = Label (root, text = "Hallo, Welt!")
w.pack ()

Ein Label-Widget kann entweder Text oder ein Symbol oder ein anderes Bild anzeigen. In diesem Fall verwenden wir die Textoption, um festzulegen, welcher Text angezeigt werden soll.

Als Nächstes rufen wir die Packmethode in diesem Widget auf. Dadurch wird angegeben, dass die Größe sich an den angegebenen Text anpasst und sichtbar wird. Das Fenster wird jedoch erst angezeigt, wenn wir in die Tkinter-Ereignisschleife eingetreten sind:

root.mainloop ()

Das Programm bleibt in der Ereignisschleife, bis wir das Fenster schließen. Die Ereignisschleife behandelt nicht nur Ereignisse des Benutzers (wie z. B. Mausklicks und Tastendruck) oder des Fenstersystems (z. B. Neuzeichnen von Ereignissen und Fensterkonfigurationsnachrichten), sondern auch Vorgänge, die von Tkinter selbst in die Warteschlange gestellt werden. Zu diesen Vorgängen gehören die Verwaltung der Geometrie (durch die Packmethode in die Warteschlange gestellt) und Aktualisierungen der Anzeige. Dies bedeutet auch, dass das Anwendungsfenster nicht angezeigt wird, bevor Sie die Hauptschleife betreten.

Tk stellt die folgenden Widgets zur Verfügung:

  • button
  • canvas
  • checkbutton
  • combobox
  • entry
  • frame
  • label
  • labelframe
  • listbox
  • menu
  • menubutton
  • message
  • notebook
  • tk_optionMenu
  • panedwindow
  • progressbar
  • radiobutton
  • scale
  • scrollbar
  • separator
  • sizegrip
  • spinbox
  • text
  • treeview

Außerdem stellt es die folgenden Fenster auf höchster Ebene zur Verfügung:

  • tk_chooseColor – lässt ein Pop-up-Fenster erscheinen, dass es dem Benutzer ermöglicht eine Farbe aus einer Palette auszuwählen.
  • tk_chooseDirectory – Pop-up-Fenster, dass einem Benutzer erlaubt interaktiv ein Verzeichnis auszuwählen.
  • tk_dialog – ein Pop-up-Fenster in Form eines Dialogfenster
  • tk_getOpenFile – Pop-up-Fenster, dass einem Benutzer erlaubt interaktiv eine Datei zum Öffnen auszuwählen.
  • tk_getSaveFile – Pop-up-Fenster, dass einem Benutzer erlaubt interaktiv eine Datei zum Schreiben auszuwählen.
  • tk_messageBox – Pop-up-Fenster mit Message.
  • tk_popup – Pop-up-Fenster.
  • toplevel – erzeugt und verändert Widgets auf höchster Ebene.

Tk stellt drei verschiede Geometrie-Manager zur Verfügung:

  • place
  • grid
  • pack

Offizielle tkinter Dokumentation: https://docs.python.org/3.5/library/tkinter.html

weiter zu den Klassen