guizero
guizero ermöglicht die einfache Gestaltung von Graphischen Benutzeroberflächen.
Ein PDF-Handout dieser Seite ist ebenfalls verfügbar.
Installation
guizero kann mit pip installiert werden:
- Windows: pip install guizero
- Linux/Mac: pip3 install guizero
Auf der Webseite wird eine alternative Möglichkeit der Installation vorgestellt, die mit einem Download auskommt.
Beispiele
Die folgende Beispielanwendungen zeigen verschiedene GUI-Elemente in Aktion. Der Quelltext muss ausgeführt werden, um das Fenster zu sehen.
import guizero
Zunächst ein leeres Fenster ohne Inhalt.
class BlankWindow:
def __init__(self, title="Blank Window"):
self.root = guizero.App(title=title)
def run(self):
self.root.display()
w = BlankWindow()
w.run()
Buttons
Nun ein Fenster mit einem Button. Die Methode click
wird bei einem Klick auf den Button ausgeführt.
class WindowWithButton(BlankWindow):
def __init__(self):
super().__init__("With Button")
# add button, invoking method 'click' when clicked.
btn = guizero.PushButton(self.root, text="next",
command=self.click)
def click(self):
print("Button clicked!")
w = WindowWithButton()
w.run()
Button clicked!
Button clicked!
Layout
Zwei Buttons können in einem Grid-Layout angeordnet werden.
class WindowWithTwoButtons:
def __init__(self):
self.root = guizero.App(title='Two Buttons', layout='grid')
btn1 = guizero.PushButton(self.root, text="btn1",
grid=[0,0])
btn2 = guizero.PushButton(self.root, text="btn2",
grid=[1,0])
def run(self):
self.root.display()
w = WindowWithTwoButtons()
w.run()
Bilder
Die Klasse Picture
kann genutzt werden, um Bilder anzuzeigen. Hierfür wird das folgende Bild ball.gif
verwendet.
class WindowWithLabel(BlankWindow):
def __init__(self):
super().__init__("With Label")
# add image in a Picture-Object
self.bild = guizero.Picture(self.root,
image="ball.gif")
w = WindowWithLabel()
w.run()
Komplexeres Beispiel
Nun ein komplexeres Beispiel mit einem Menü, einem Button und einem Label.
class GUI:
def __init__(self):
self.counter = 0
root = guizero.App(title='TKinter Demo', layout='grid')
guizero.MenuBar(root,
toplevel=['Tools'],
options=[
[ ['Next', self.click] ]
])
# add image
bild = guizero.Picture(root, image="ball.gif",
grid=[0,0])
# add button, invoking method 'click' when clicked.
btn = guizero.PushButton(root, text="next",
command=self.click,
grid=[0,1])
# add label with counter value
self.lbl = guizero.Text(root,
text="Label für Counter",
grid=[1,1])
# add entry field
self.ent = guizero.TextBox(root, grid=[2,1])
# entering main event loop
root.display()
def click(self):
# update label and counter
self.lbl.value = "Counter %s" % self.counter
self.counter += 1
if __name__ == "__main__":
GUI()