image image


image

Gui Zero Tutorial: Einen geheimen Namen auswählen

Während ich am Freitag über meine Entdeckung von PySimpleGUI und DearPyGui berichtete, erinnerte ich mich daran, daß ich Anfang des Jahres ein einführendes Tutorial zu Gui Zero vorgestellt hatte und eigentlich noch mehr mit diesem einfachen Python-Modul zur Programmierung graphischer Nutzeroberflächen anstellen wollte. Angefixt durch die Videos vom Freitag habe ich mich hingesetzt und ein weiteres kleines Tutorial erstellt.

Ich habe dazu ein Beispielprogramm aus dem netten kleinen Büchlein »Create Graphical User Interfaces with Python« von Laura Sach und Martin O’Hanlon ein wenig aufgebort. Es ist dennoch recht einfach geblieben: Es ist eine simple GUI mit einem fetten Knopf und wenn dieser gedrückt wird, wählt der Zufallszahlengenerator einen geheimen Namen für Geheimagenten aus (ey, das Buch ist für Kids und manchmal geht das Kind im Manne auch mit mir in meinem fortgeschrittenen Alter durch).

Das Progrämmchen besteht aus weniger als 25 Zeilen, ist aber dennoch eine vollständige App mit einer nett aussehenden und funktionierenden graphischen Oberfläche:

from guizero import App, Text, PushButton
from random import choice

my_font = "American Typewriter"

def choose_name():
    first_name = ["Anatol", "Daniel", "Woody", "Tiberius", "Smokey", "Carmen", "James",
                  "Hirni", "Beißer"]
    second_name = ["Schielauge", "Mysterioso", "Irrgartenläufer", "Katzenauge", "Dunkelmüller",
                   "Hühnerbrust", "Panzerknacker", "Hornochse", "👻💀☠️👽🤖👻"]
    spy_name = choice(first_name) + " " + choice(second_name)
    name.value = spy_name

app = App(title = "For Your Eyes Only", bg = (235, 215, 182), height = 180, width = 640)

text = Text(app, "Drücke den Knopf um Deinen Geheimnamen zu erfahren:", font = my_font, size = 18)
button = PushButton(app, choose_name, text = "Wähle einen Namen!")
# button.bg = (250, 0, 0) # Funzt nicht unter macOS Catalina
button.font = my_font
button.text_size = 30
button.text_color = (200, 0, 0)
name = Text(app, text = "",  font = my_font, size = 36, color = (0, 200, 0))

app.display()

Wie in dem Buch auch wollte ich eigentlich den Knopf in knalligem Rot halten, aber ich habe es ums Verrecken nicht hinbekommen. Bis ich dann in einer Anmerkung im Buch las, daß button.bg in macOS nicht funktioniert, weil das mit den Stilrichtlinien von Apple kollidiert. Manchmal sollte man doch das verflixte Manual vollständig lesen. Aber wenigsten die Beschriftung des Knopfes akzeptierte Farben, zumindest bei meinem macOS Catalina.

Da ich es liebe, Beispiele bis an die Grenzen auszureizen, habe ich einen Zweitnamen vollständig aus Emojis vorgegeben und Gui Zero hat das anstandslos verarbeitet. Das ist nicht unbedingt selbstverständlich, da Gui Zero auf Tkinter basiert und Tk noch lange Probleme mit hohen Unicode-Werten hatte.

Ebenfalls der Herkunft aus Tkinter geschuldet ist, daß unter macOS Gui Zero per Default nur GIF als Bildformat unterstützt (unter Windows und Linux auch noch PNG). Hat man jedoch die PIL-Fork Pillow auf seinem Rechner installiert, erkennt Gui Zero das automatisch und unterstützt dann die neben GIF auch die Formate Animated GIF, BMP, ICO, PNG, JPG und TIF.

Tkinter und Gui Zero lassen sich übrigens kombinieren: Man kann sowohl Gui Zero aus einer Tkinter-Anwendung aufrufen, als auch Tkinter-Funktionen in einer Gui Zero App nutzen.

Die meisten Beispiele in dem oben genannten Buch nutzen das Default-Layout von Pygame Zero, das alle Widgets untereinander zentriert im Fenster ausgibt, einige Beispiele nutzen jedoch auch das elaboriertere grid-Layout. Ein Blick in die Dokumentation zeigt, daß man – zusammen mit dem Container Box – damit eine Menge anstellen kann. Ich galube, ich muß mich noch ein wenig in Gui Zero hineinknien. Still digging!


(Kommentieren) 

image image



Über …

Der Schockwellenreiter ist seit dem 24. April 2000 das Weblog digitale Kritzelheft von Jörg Kantel (Neuköllner, EDV-Leiter Rentner, Autor, Netzaktivist und Hundesportler — Reihenfolge rein zufällig). Hier steht, was mir gefällt. Wem es nicht gefällt, der braucht ja nicht mitzulesen. Wer aber mitliest, ist herzlich willkommen und eingeladen, mitzudiskutieren!

Alle eigenen Inhalte des Schockwellenreiters stehen unter einer Creative-Commons-Lizenz, jedoch können fremde Inhalte (speziell Videos, Photos und sonstige Bilder) unter einer anderen Lizenz stehen.

Der Besuch dieser Webseite wird aktuell von der Piwik Webanalyse erfaßt. Hier können Sie der Erfassung widersprechen.

Diese Seite verwendet keine Cookies. Warum auch? Was allerdings die iframes von Amazon, YouTube und Co. machen, entzieht sich meiner Kenntnis.


Werbung

Diese Spalte wurde absichtlich leergelassen!


Werbung


image  image  image
image  image  image


image