Python 3 - Benutzeroberfläche mit Tkinter
Fenster anlegen
Mit dem Modul Tkinter stellt Python ein Werkzeug zur Erstellung von graphischen Benutzeroberflächen zur Verfügung.
Das Modul zählt zum Lieferumfang von Python und ist standardgemäß installiert. Bei grafischen Benutzeroberflächen handelt es sich
um Programme, die sich gewöhnlich in einer Endlosschleife befinden und auf externe Ereignisse warten. Erfolgt eine Tastatureingabe
oder es wird vom Benutzer etwas angeklickt, wird das Programm oder der zuständige Teil des Programms ausgeführt. Anschließend geht
das Programm in die Endlosschleife zurück und wartet auf weitere Ereignisse. Die Endlosschleife wird mit "main.loop" definiert.
Das Fundament der Bedieneroberfläche ist ein Fenster, in dem alle Ereignis-Elemente untergebracht werden.
Fenster generieren
Um ein Fester zu öffnen werden nur wenige Programm-Zeilen benötigt. Beispiel:
# ---------------------------------------------------------------
from tkinter import*
Hauptfenster = Tk()
Hauptfenster.mainloop()
Ergebnis:
Fenster konfigurieren
Mit einigen Parametern kann das Fenster nach Wunsch gestaltet werden (Titel, Hintergrundfarbe, Größe, Position).
Beispiel:
Mit Hilfe von "Label" kann in einem Fenster ein Bild oder Text positioniert werden.
Nachfolgend wird ein Bild hinzugefügt und mit 'place' positioniert. Beispiel:
# ---------------------------------------------------------------
from tkinter import*
Hauptfenster = Tk()
Hauptfenster.title ('Mein Fenster')
Hauptfenster.config (bg='#005EBC')
Hauptfenster.geometry ('1362x700+0+0')
# Ein Bild wird hinzugefügt
Grafik = PhotoImage(file='MeinBild.gif', width=185, height=180)
Bild = Label(Hauptfenster,
image=Grafik,
bg='white')
Bild.place (x=30, y=10, width=250, height=180)
Hauptfenster.mainloop()
Ergebnis:
+ Text
Ähnlich verfährt man mit Text. Beispiel:
# ---------------------------------------------------------------
from tkinter import*
Hauptfenster = Tk()
Hauptfenster.title ('Mein Fenster')
Hauptfenster.config (bg='#005EBC')
Hauptfenster.geometry ('1362x700+0+0')
# Ein Bild wird hinzugefügt
Grafik = PhotoImage(file='MeinBild.gif', width=185, height=180)
Bild = Label(Hauptfenster,
image=Grafik,
bg='white')
Bild.place (x=30, y=10, width=250, height=180)
# Text wird hinzugefügt
Wie_gehts = Label(Hauptfenster,
font=("Arial 70 bold"),
bg='#005EBC',
fg="yellow",
bd=10,
relief=RIDGE,
text="Hi, wie geht's?")
Wie_gehts.place (x=200, y=220, width=962, height=230)
Hauptfenster.mainloop()
Ergebnis:
+ Datum
Um die aktuellen Zeiteingaben zu ermitteln, wird zunächst das Modul 'time' importiert. Mit time.ctime werden die
aktuellen Zeitdaten ermittelt. Ein Zähler sorgt einmal pro Sekunde für Aktualisierung der Anzeige. Beispiel:
after(ms, fkt) Aufruf einer Funktion fkt nach ms Millisekunden.
config Mit der Methode können mehrere Parameter (Optionen) eines bereits existierenden Widgets verändert
werden. Beispiel:
MeinText = Label (Hauptfenster, font=('Arial 30 bold'), text='Text davor')
Meintext.config (font=('Arial 15 bold'), text='Text danach')
bd (oder borderwidth), Rahmenbreite in Pixel
bg (oder background), Hintergrundfarbe
fg (oder foreground), (Vordergrundfarbe) Textfarbe
Farben Die Farben für Hintergrund und Text können frei gestaltet werden. Für oft vorkommende Farben gibt
es vordefinierte Strings: 'black', 'blue', 'cyan', 'green', 'magenta', 'red', 'white', 'yellow'.
Beispiel: Label (Hauptfenster, bg = 'yellow')
Darüber hinaus kann man die Mischung aus Rot, Grün und Blau als Hexadezimalzahl mit Doppelkreuz vorgeben: #003BA5.
Beispiel: Label (Hauptfenster, bg = '#005EBC')
font Schrifttyp. Die Schriftart kann mit drei Parametern festgelegt werden:
1 – Schrift-Familie wie Arial, Courier, System, Times, Verdana usw.
2 – Größe
3 – Stil. Hier stehen bold (fett), italic (kursiv), underline (unterstrichen) und overstrike (durchgestrichen) zur Verfügung.
Beispiel: Label(Hauptfenster, font=('Comic Sans MS', 25, 'bold'))
height Höhe in Pixel
Beispiel: MeinText = Label (Hauptfenster, width=50, height=20, text='Alles klar?')
image Name des Bildes
justify Ausrichtung des Textes. Es stehen CENTER oder 'center' (zentriert), LEFT oder 'left' (links)
und RIGHT oder 'right' (rechts) zur Verfügung.
Beispiel:
MeinText="""Das ist Zeile 1
das ist Zeile 2
und endlich die dritte"""
Label (Hauptfenster, text=MeinText, justify='left')
pack(), place(), grid() Methoden, mit denen ein Widget positioniert und sichtbar gemacht wird.
padx Leerer Raum in Pixel rechts und links.
pady Leerer Raum in Pixel oben und unten.
relief Form des Rahmens. Es stehen SUNKEN oder 'sunken', RAISED oder 'raised', GROOVE oder 'groove',
RIDGE oder 'ridge' und FLAT oder 'flat' zur Verfügung.
width Breite in Pixel
Beispiel: MeinText = Label (Hauptfenster, width=150, height=120, text='Alles klar?')