5.1.2.7Threading
Das Python-Threading-Modul ist eine gute Sache, wenn man auf der
Raspberry Pi Parallel arbeiten möchte. Es wird verwendet, um mehrere
Aufgaben eines Programms gleichzeitig auszuführen und erfordert
Multicore-Prozessoren. Mit diesem Modul wird hier das gleichzeitige Senden und
Empfangen von Daten über CAN- und UART-Busse ermöglicht.
5.2 Tkinter
Es existierenverschiedene Python-Modul für die
Realisierung von grafischenBenutzeroberflächen.Beispielesind etwa PyQt,
PyGTk, wxPython, Tkinter. In dieser Bachelorarbeit liegt der Fokus auf der
Tkinter Softwarebibliothek,da hiermit einfach und schnell eine GUI erstellt
werden kann. Diese Bibliothek ist auf dem Raspberry Pi werkseitig schon
installiert. Tkinter steht für Tk Interface, während Tk ein
GUI-Toolkit Bibliothek für die Programmiersprache Python ist.
(Kofler, Kühnast, & Scherbeck, 2018, S. 734)
5.2.1 Widgets Entwurf
Der GUI-Toolkit Tk verfügt über verschiedene
Widgets, die man in fast alle Benutzeroberfläche finden kann. Es handelt
sich also um: Label, Button, Canvas, Frames, Checkbuttons, Radiobuttons, Entry,
Textfelder, Dialoge, Menüs, Schieberegler. In diesem Kapitel wird gezeigt
wie Widgets mit dem Tkinter Toolkit erzeugt werden. Die Abbildung 16 stellt die
für die Realisierung der Prüfstand-Seite Verwendete Widgets
dar.
2
5
3
1
4
Abbildung 16: Die Verschiedene
Widgets der Prüfstand Synchronmaschine Seite
1. Label
2. Buttons
3. Canvas
4. Menü
5. Text-Box
5.2.1.1 Label
Labels werden benutzt, um Texte und Bilder darzustellen,jedoch
ermöglichen sie keine Interaktion mit dem Nutzer. Label sind in Tkinter
sehr einfach zu erzeugen. Sie werden in dieser Bachelorarbeit benutzt, um zum
Beispiel den Titel einer Seite darzustellen.
Da Labels in einem Tkinter-Fenster erzeugt werden, wird zuerst
gezeigt wie die verschiedenen Fenster/Seite, die unsere Benutzeroberfläche
enthält, mit Python Programmiert werden (siehe Abbildung 17).
importtkinter astk #import von
Tkinter Modul
# Initialisierung der klasse Startseite
classStartSeite(tk.Frame):
# create StartPage
def __init__(self, master): # Definition der
Konstruktormethode
pass
# Initialisierung der klasse Login Seite
classLoginSeite(tk.Frame):
# create StartPage
def __init__(self, master): # Definition der
Konstruktormethode
pass
# Initialisierung der klasse Prüfstand
classPrüfstand(tk.Frame):
# create StartPage
def __init__(self, master): # Definition der
Konstruktormethode
pass
#Start des Programms
root = tk.Tk()#erzeugt das tkinter-wurzelobjekt
tk.frames = {}
# Instanzieren der Seiten
StartSeite = StartSeite(root)
LonginSeite = LoginSeite(root)
Prüfstand = Prüfstand(root)
Graphen_Ansicht = Graphen_Ansicht(root)
StartSeite.pn = 0
LonginSeite.pn = 1
Prüfstand.pn = 2
Graphen_Ansicht.pn = 3
# Zusammenfassen zu Frame-Container Tk.frames
for F in {StartSeite,
LonginSeite, Prüfstand, Graphen_Ansicht}:
tk.frames[F.pn] = F
# Festlegung der Anzuzeigenden Seite
def show_frame(p):
frame = tk.frames[p]
frame.tkraise()
show_frame(StartSeite.pn)
root.mainloop()
Abbildung 17:
Fenster-/Seitenerstellung der grafischen Oberfläche mit Tkinter.
Zu Beginn des Python-Codeswird das Tkinter-Modul importiert
und dann das Tkinter-Root-Objekt erstellt. Um dieses Fenster aktiv zu halten,
muss am Ende des Codes die Schleife der Hauptklasse Tkinter verwendet werden.
Nun können die unterschiedlichen Seiten der Software
(StartSeite, LoginSeite,
Prüfstand)
instanziieren und am Ende die verschiedene Klasse definiert
werden. Eine Klasse in Python wird am Anfang mit dem Namen
class, gefolgt vom Namen der Klasse und am Ende mit
Klammern definiert.
Nachdem das Tkinter-Fenster erzeugt wurde, können nun die
verschiedenen Widgets in der entsprechenden Seite erstellt werden. Die
Erstellung von Widgets erfolgt in der createwidgets()-Methode
der jeweiligen Klasse. Methoden werden in der objektorientierten Programmierung
wie Funktionen definiert; d. h. mit dem Wort def' gefolgt von
dem Namen der Methode. Die folgende Abbildung zeigt wie Label mit Tkinter
erzeugt werden.
Abbildung 18: Label
inTkinter
Der obige Code erzeugt ein Label in Tkinter mit dem Text
Prüfstand Synchronmaschine. Dieses Label wird als Titel der
Prüfstandseite (Seite 3 der grafischen Benutzeroberfläche)
verwendet.
Ohne die Anwendung der grid()-Methode
würde den Label mit dem Text Prüfstand Synchronmaschine
nicht anzeigen.bg ist die Abkürzung für Background
und fg für foreground.#41B77f ist eine
andere Arte im Hexadezimale Form für die Eingabe in Tkinter einer
Farbe.
|