====== GUI mit tkinter ====== In [[Python]] lassen sich einfache grafische Benutzeroberflächen (GUI) mit dem Modul ''tkinter'' erstellen. Wir wollen dies an einem kleinen Beispiel durchspielen. {{:schule:prog:tkinter-demo.png?nolink|}} In der Abbildung sind ein Button, ein Eingabefeld (Entry) und ein Label abgebildet. Zunächst trägt man seinen Namen in das Textfeld ein. Bei einem Klick auf den Button wird man mit seinem Namen begrüßt. Es folgt der Quelltext. from tkinter import * # Alle Funktionen aus tkinter importieren class App: def __init__(self): fenster = Tk() # Fenster öffnen fenster.title("tkinter Demo") # Titel des Fensters festlegen button = Button( fenster, text="OK", command=self.button_click) # Button erstellen # Bei einem Klick wird die Methode button_click ausgeführt button.pack() # Button in Fenster positionieren self.entry = Entry(fenster) # Eingabefeld erstellen self.entry.insert(0, "Name")# Einen Text einfügen self.entry.pack() # Das Eingabefeld im Hauptfenster positionieren self.lbl = Label(fenster, text="Name eingeben") # Label mit Test erstellen self.lbl.pack() # Label im fenster positionieren fenster.mainloop() def button_click(self): eingabe = self.entry.get() # Test aus dem Eingabefeld auslesen self.lbl.configure(text="Hallo " + eingabe) # Neuen Text setzen app = App() # Die App wird erstellt und automatisch gestartet Das [[http://effbot.org/tkinterbook/tkinter-index.htm|tkinterbook]] beschreibt viele weitere Komponente von tkinter zeigt an Beispielen, wie man daraus eine einfache GUI erstellen kann. In dem Buch //Raspberry Pi -- das umfasssende Handbuch//, Kap. 20.9 (Grafische Benutzerschnittstelle mit tkinter) wird die Verwendung mit konkreten Beispielen beschrieben. Schließlich findet sich in der [[http://infohost.nmt.edu/tcc/help/pubs/tkinter/tkinter.pdf|tkinter Referenz]] eine ausführliche Beschreibung. ===== Grafische Programmierung ===== Die grafische Programmierung erfolgt mit Hilfe des ''Canvas''-Widget. Ein Einführung über dessen Benutzung steht in "Kapitel 8.3.2: Die Klasse Canvas" in dem Buch //Raspberry Pi programmieren mit Python//. ===== Weitere Frameworks ===== Neben tkinter gibt es eine Menge weiterer GUI-Frameworks für die Erstellung von GUI-Anwendungen. Die [[https://docs.python.org/3/faq/gui.html|offizielle FAQ zu Python 3]] listet einige auf. Für PyQt gibt es etwa ein [[http://zetcode.com/gui/pyqt5/firstprograms/|Tutorial]], das die Verwendung des Qt-Framework für Python erläutert. Vielleicht ist aber auch eine Fensteranwendung gar nicht die richtige Wahl. Eine Anwendung kann ja z.B. auch über den Browser bedient werden. Hier gibt es einfache Web-Frameworks wie Flask oder, noch einfacher, Bottle oder schließlich Django für die professionelle Web-Entwicklung. ===== Links ===== * [[https://www.tutorialspoint.com/python/python_gui_programming.htm|Python GUI Programming]] - Tutorial über tkinter. * [[https://likegeeks.com/python-gui-examples-tkinter-tutorial/|Python GUI examples]] - ein weiteres Tutorial. * Das [[https://github.com/pintman/pixelflut|Pixelflut]]-Projekt erlaubt es, einen Bildschirm über das Netz freizugeben. Einzelne Pixel können mit TCP-Paketen gesetzt werden. * [[https://sw101.tbs1.de/pysimplegui/|PySimpleGUI]] setzt auf tkinter auf und ermöglicht eine einfachere Art der Programmierung.