Gibt es gute, moderne Widget-Toolkits für Pygame? Ich habe mir PGU angesehen , aber es ist anscheinend nicht gewartet.
Gibt es gute, moderne Widget-Toolkits für Pygame? Ich habe mir PGU angesehen , aber es ist anscheinend nicht gewartet.
Antworten:
Nein. Jedes Jahr erstellt jemand eine neue Pygame-UI-Bibliothek und gibt sie nach einigen Versionen wieder auf, wahrscheinlich sobald er feststellt, dass das Schreiben von Schaltflächenlayouts einfach ist, das Schreiben einer vollständigen UI-Bibliothek jedoch echte Arbeit ist. Das gui
Tag auf der Pygame-Site zeichnet einige davon auf.
Im Januar 2011 habe ich mir fünf GUI-Toolkits für Pygame angesehen und versucht, alle mit Python 3 zum Laufen zu bringen. Die fünf waren: Albow, GooeyPy, PGU, pqGUI und sgc.
Mit GooeyPy war ich nicht erfolgreich , aber die anderen vier konnten mit Python 3 arbeiten. (Ich wollte auch Poutine von Shandy Brown ausprobieren, konnte es aber nicht finden und habe Ocemp völlig übersehen.)
Leider scheinen Albow und Ocemp ziemlich tot zu sein. Albow wurde zuletzt im Jahr 2009 und Ocemp zuletzt im Jahr 2008 aktualisiert. (Beachten Sie, dass die Version von Albow auf pygame.org nicht die neueste ist.)
PGU (Phils Pygame Utilities) wurde von Peter Rogers übernommen und gewartet, und Victor Kam hat das meiste davon auf Python 3 konvertiert. Es wurde zuletzt im Januar 2012 aktualisiert und ist vermutlich verbessert, seit ich es untersucht habe. (Beachten Sie, dass die Version von PGU auf pygame.org nicht die neueste ist.)
sgc war neu und immer noch sehr unvollständig, als ich es mir ansah. Es wird jedoch derzeit aktiv entwickelt und könnte inzwischen erheblich verbessert werden. (Beachten Sie, dass die Version von sgc auf pygame.org nicht die neueste ist.)
Ich ließ jeden der fünf durch einen einfachen Codezeilen-Zähler laufen, um ihre Größe zu messen:
Dies waren die Ergebnisse (im Januar 2011):
Albow-Code min = 2810, max = 4551 (max = 162% von min) Albow \ Demo min = 453, max = 649 GooeyPy \ gooeypy min = 2034, max = 3941 (max = 194% von min) GooeyPy \ examples min = 178, max = 351 pgu \ pgu min = 2910, max = 7047 (max = 242% von min) inkl. pgu \ pgu \ gui min = 1678, max = 4638 (max = 276% von min) pgu \ examples min = 822, max = 2527 pqGUI.py min = 1586, max = 1834 (max = 116% von min) Beispiel.py min = 178, max = 225 sgc (unvollständig) min = 889, max = 1243 (max = 140% von min)
In jedem Fall ist die "min" -Nummer repräsentativer für die "Größe" des Toolkits, da Leerzeichen und Kommentare nicht berücksichtigt werden. Wenn die "max" -Nummer sehr nahe an der min-Zahl liegt, bedeutet dies, dass der Code nicht viele Leerzeichen und nicht viele Kommentare enthält. pqGUI veranschaulicht dies, weil es fast keine Kommentare enthält (und auch keine Docstrings), was zu schade ist, weil es (IMO) die am besten aussehenden GUI-Elemente gemacht hat.
Wichtige Einschränkung: Docstrings werden nicht als Kommentare gezählt! Das macht PGU, sgc & GooeyPy, die Docstrings haben, dicker und weniger gut dokumentiert als sie wirklich sind, im Vergleich zu Albow und pqGUI, denen Docstrings fehlen.
Ich mochte pqGUI, weil mir das Aussehen der Widgets gefallen hat, aber es wird nicht unterstützt und ist nicht dokumentiert, und ich konnte den Autor nicht finden.
Von den fünf war die PGU ab Januar 2011 klarer Marktführer. Aber ich war mit allen fünf unzufrieden, also schrieb ich meine eigenen. (Hinweis: PGU & sgc wurden beide aktualisiert und vermutlich verbessert, seit ich sie mir angesehen habe.)
Laut Joe Wreschnigs ironischer Beobachtung (oben) ist mein GUI-Toolkit wie alle anderen unvollständig. Aber es gibt ein paar Dinge zu tun.
Es fehlen jedoch einige wichtige Steuerelemente, die Sie wahrscheinlich benötigen, z. B. Dialogfelder zum Öffnen / Kombinieren von Dateien und Tabellen. Die vorhandenen Steuerelemente sehen gut aus, aber Funktionen wie Titelleisten und Bildlaufleisten sind eine feste Anzahl von Pixeln und keine einstellbare Breite. Der Code ist gut kommentiert und es gibt eine Demo-App mit Verwendungsbeispielen, aber es gibt keine ordnungsgemäße Dokumentation zur Verwendung. Außerdem ist es Pre-Beta, so dass sich alles ändern kann.
Die Ergebnisse des Code-Zählers dafür sind:
DavesGUI (mit Demo-Code) min = 2267, max = 3055 (max = 135% von min) (ohne Demo-Code) min = 2018, max = 2644 (max = 131% von min) (w / docstrings auskommentiert) min = 1442, max = 2644 (max = 183% von min)
Wenn jemand es trotz dieser Einschränkungen ausprobieren möchte, kontaktieren Sie mich per E-Mail. Fragen Sie nach "DavesGUI". Meine E-Mail-Adresse lautet hier: http://www.burtonsys.com/email/
Ich habe kürzlich gesehen, dass Pygtk mit Pygame verwendet wird und es funktioniert wirklich gut. Stellen Sie einfach sicher, dass Sie das Expose-Ereignis mit dem gtk-Zeichenbereich-Widget verwenden und die Pygame-Daten bei jedem Durchlauf durch die gtk-Hauptschleife aktualisieren. Wenn Sie möchten, dass ein vollwertiges GUI-Toolkit innerhalb von Pygame funktioniert, wird dies nicht passieren. Wenn Sie jedoch möchten, dass ein vollwertiges GUI-Toolkit mit Pygame verwendet wird, haben Sie Glück, pygtk ist es. Sie können gtk sogar mit der Programmiersprache C verwenden und dennoch Pygame als Widget in den Zeichenbereich importieren und Pygame in Python aktualisieren, wenn dies Ihr Boot schwimmt und Sie eine turbogeladene Geschwindigkeit wünschen. Warum die Aufregung, verwenden Sie einfach Google und finden Sie die Antwort, dann implementieren Sie sie, nicht schwer und nicht groß. Pygame ist übrigens echt cool. Diese Leute haben so viel Arbeit investiert, und es funktioniert so effizient, dass es erstaunlich ist.
Ich habe meiner GameEngine-Bibliothek sehr grundlegende GUI-Elemente hinzugefügt: http://aharrisbooks.net/pythonGame/ch10/ (In einem Buch über die Spieleentwicklung in Python enthalten)
Ich habe sehr einfache GUI-Elemente basierend auf dem Standard-Sprite erstellt: eine Beschriftung, eine Schaltfläche, eine mehrzeilige Beschriftung und eine Mini-Bildlaufleiste.
Diese Tools sind recht einfach, aber für viele Zwecke geeignet. Natürlich ist die Bibliothek vollständig Open Source, Sie können sie also jederzeit ändern, wenn Sie dies wünschen. Das einzige Element der Benutzeroberfläche, das ich (noch) nicht hinzugefügt habe, war ein Texteingabe-Widget. Das liegt daran, dass das Ereignismodell dafür viel komplexer ist als die anderen Modelle, und ich hatte eine Frist.
Fühlen Sie sich frei, damit zu spielen (ob Sie das Buch verwenden oder nicht) und lassen Sie mich wissen, wenn Sie auf Probleme stoßen. Ich werde versuchen zu helfen.
Ich habe Videos meines Kurses unter http://synapse.cs.iupui.edu/Mediasite/Catalog/ verfügbar.
Schauen Sie sich den N451-Kurs an. Das ist die zur Spieleentwicklung.
Google Summer of Code hat eine neue Benutzeroberfläche hinzugefügt: http://blog.sambull.org/pygame-gui-0-2