image image


image

Worknote: Processing (.py) 3 und 4 (und Py5) und die Titelzeile

Erfreulicherweise haben meine Seiten zu Processing.py gerade in den letzten Wochen und Monaten verstärkt Zuspruch gefunden (wie mir auch mein Neugiertool verrät). Dadurch erreichen mich aber auch immer wieder Fragen, wie man denn einen Text in die Titelzeile des Graphikfensters setzt oder warum der diesbezügliche Befehl in meinen alten Tutorials nicht mehr funktioniert. Damit ich nicht jede Frage einzeln beantworten muß und ich eine Seite habe, auf die ich stattdessen verlinken kann, hier eine Antwort, wie ich sie in ähnlicher Form bei Anfragen gegeben habe:

Ursprünglich gab es keine Möglichkeit in Processing (und daher auch in Processing.py) einen Titel zu setzen (Processing setzte automatisch den Dateinamen als Titel ein). Dann gab es mit frame.setTitle() einen Hack für Processing und auch für Processing.py, der dann doch den Titel per Skript in die Titelzeile mogelte. Nur … irgendwann funkionierte dies zwar weiterhin in Processing, aber nicht mehr in Processing.py.

image

Dann hatte ich mit this.surface.setTitle() einen üblen Hack gefunden, der dann doch wieder einen Titel setzte. Ein übler Hack war das deswegen, weil er – wie das this. schon vermuten läßt – an Processing vorbei direkt auf das darunterliegende java.awt() zugriff. Irgendwann ab Processing 4 funktionierte auch dieser Hack nicht mehr.

image

Processing 4 (und damit auch Processing.py) haben aber eine Reihe von neuen Hacks veröffentlicht, die angeblich »für immer« funktionieren sollen. In Processing (Java) heißen die Befehle:

windowTitle("Hello World!");  // setzt den Titel in die Titelzeile
windowResizable(true);        // das Zeichenfenster kann in der Größe verändert werden
windowMove(100, 100);         // legt die Startposition des Zeichenfensters fest

Diese Befehle sind so neu (sie funktionieren auch tatsächlich erst mit Processing 4), daß sie noch nicht in der Referenz zu Processing zu finden sind. Dort stehen noch die alten Processing 3 Funktionen (Vorsicht, das ist Java, kein Python):

surface.setTitle("Hello World!");
surface.setResizable(true);
surface.setLocation(100, 100);

Die entsprechenden Befehle lauten also für Processing.py in der Processing 3 PDE (das ist jetzt Python):

this.surface.setTitle("Hello World!");
this.surface.setResizable(true);         # funktionierte bei mir nie
this.surface.setLocation(100, 100);

Wer also Processing.py noch mit dem Processing 3 PDE einsetzt (und es gibt beim derzeitigen Entwicklungsstand von Processing.py –– zum Beispiel keine Fehlermeldungen – durchaus gute Gründe dafür), der muß obige Code-Schnipsel verwenden.

Thrill-Seekers auf der anderen Seite, die Processing.py mutig mit Processing 4 einsetzten, müssen aber – wenn sie einen vom Dateinamen abweichenden Titel in der Titelzeile haben wollen – diese Code-Schnipsel benutzen:

this.windowTitle("Hello World!");  # setzt den Titel in die Titelzeile
this.windowResizable(true);        # das Zeichenfenster kann in der Größe verändert werden
this.windowMove(100, 100);         # legt die Startposition des Zeichenfensters fest

Wie das this. vermuten läßt, ist dies immer noch ein Hack und daher stehe ich auch der Zusage »für immer« weiter skeptisch gegenüber.

In Py5 funktionieren zumindest zwei dieser drei Befehle ebenfalls (das window_rezisable() habe ich bisher noch nie benutzt), sie heißen dort:

window_title("Hello World!");  # setzt den Titel in die Titelzeile
window_resizable(true);        # das Zeichenfenster kann in der Größe verändert werden
window_move(100, 100);         # legt die Startposition des Zeichenfensters fest

Interessanterweise benötigen diese Befehle kein vorangestelltes this., ich vermute mal, weil Py5 (via JPype) sowieso direkt auf das darunterliegende awt zugreift. Daher glaube ich hier der Zusage »für immer« mehr.

Py5 ist in meinen Augen sowieso die Zukunft von Processing.py. Ich empfehle daher, statt sich weiter mit der Processing-4-PDE zu quälen, die Processing.py sowieso (zumindest momentan noch) nur halberzig unterstützt, ein aktuelles (sic!) Thonny zu starten, darin den Py5-Mode und das Py5-Plugin von Tristan Bunn zu installieren und lustig damit loszuprogrammieren. Vor allem, weil es ein Python 3 ist mit der Unterstützung all dieser netten Bibliotheken wie NumPy, SciPy, Pillow (mehr zu Pillow hier) und (mit Einschränkungen wegen eventueller Threads und Konflikten mit Tkinter) der Matplotlib. Und es kann – siehe Screenshot – sogar mit Emojis in der Titelzeile umgehen.

Ich habe jedenfalls diesen Umstieg schon vollzogen und starte nur noch die Processing-PDE, wenn ich an meinen alten Skripten etwas ändern will oder muß. Denn Py5 macht einfach Spaß!


(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 ehemaliger 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