2009-04-29 6 views
39

Ich habe ein wenig Erfahrung bei der Entwicklung kleiner Kommandozeilen-Anwendungen mit Python. Ich möchte mit der Entwicklung von GUIs mit Python weitermachen. Von den verfügbaren GUI-Toolkits für Python sind die, denen ich am meisten geneigt bin, wxPython und Tkinter; aber ich möchte nicht die ganze GUI selbst programmieren.Schöne IDE mit GUI-Designer für wxPython oder Tkinter

Gibt es gute GUI-IDEs für diese Toolkits? Es muss nicht frei oder Open Source sein.

Antwort

30

Ich werde nur über WxPython sprechen, weil es das einzige Toolkit ist, mit dem ich Erfahrung habe. TkInter ist gut, um kleine Programme zu schreiben (dann benötigt es keinen GUI Designer), ist aber nicht wirklich geeignet für große Anwendungsentwicklung.

  • wxFormBuilder ist wirklich gut: es erzeugt .XRC Dateien benötigen Sie in Ihrem Programm zu laden, und es kann durch Subklassen sie .py Dateien erzeugen, wenn Sie verwenden.

  • DialogBlocks und wxDesigner sind zwei kommerzielle Software, die direkt Python-Code generieren. Ich habe nicht so viel wegen ihres Preises getestet.

  • wxGlade ist (glaube ich) noch nicht reif genug für große Programme, aber es ist einen Versuch wert.

Nach all diesen versuchen, erkannte ich, sie alle Mängel hatte und nichts ist besser als nur die GUI in einem Editor zu schreiben. Das Problem ist die erweiterte Lernkurve. Aber dann werden Sie viel schneller und Ihr Code wird viel flexibler sein als wenn Sie einen GUI-Designer verwenden.

Werfen Sie einen Blick auf diese list of major applications mit WxPython geschrieben. Sie werden wahrscheinlich sehen, dass keiner von diesen einen GUI-Designer verwendet, es muss einen Grund dafür geben.

Sie verstehen dann gs ist richtig wenn Sie sagen, dass Sie entweder zu PyQt wechseln oder Sie schreiben Ihre Anwendung von Hand. Ich habe mir Qt Designer in der Vergangenheit angeschaut und dachte, das wäre was ich brauchte. Leider hat PyQt einige Lizenzbeschränkungen.

+3

Wie definieren Sie "große Anwendungsentwicklung", und warum denken Sie, tkinter ist ungeeignet? Obwohl ich es noch nie mit einer Millionen-Zeilen-Anwendung verwendet habe, denke ich, dass es genauso gut skalierbar ist wie wxPython. –

0

Ich habe wxGlade für einige unternehmenskritische Anwendungen verwendet. Wenn du ein wenig schwach in WX bist, kann es rau sein, aber sobald du dich daran gewöhnt hast, ist es ein großartiges Werkzeug.

15

Dies kann Ihre Frage nicht direkt beantworten, aber ich wählte PyQt, weil es keine guten UI-Designer für wxPython gab.

Anscheinend schreiben Sie entweder Ihre GUIs von Hand oder wechseln zu PyQt.

Da sich Nokia und Riverbankcomputing nicht auf eine LGPL-Lösung einigen konnten, entschied sich Nokia, eigene Bindungen zu erstellen: PySide.

+3

+1 Qt Designer ist das Programm, mit dem ich UI-Designer weniger hasse. Außerdem scheinen die PyQt-Bindungen etwas pythonischer zu sein, die wx-Einsen scheinen etwas zu viel C++ zu haben. (Zum Beispiel die ganzzahligen Ereignis-/Aktions-IDs.) Eine andere Sache ist, dass die Verwendung der generierten Code- und Ressourcendateien, die zur Laufzeit geladen werden, größtenteils analog ist. Es tut nicht weh, dass der generierte Code sehr ordentlich ist und ziemlich genau das, was du selbst geschrieben hast. – millimoose

+0

Unterstützt PyQt natives Aussehen und Verhalten für Win/Mac/Linux? –

+0

@ eyze: Teilweise. Auf Mac verwendet es die Carbon-Elemente (sie portieren es nach Cocoa ...), bei Win wechseln sie von benutzerdefinierten Elementen (natives Aussehen und Verhalten) zu echten nativen Widgets. Unter Linux malen sie benutzerdefinierte Elemente, aber das Erscheinungsbild kann für alle Qt-Anwendungen auf einem System geändert werden. Ein weiterer Vorteil von PyQt ist seine Bibliothek, es ist viel mehr als nur ein GUI-Framework. –

4

Ich benutze xrced (kommt mit WxPython). Die GUI ist in XML-Dateien definiert, Sie haben eine automatisch generierte Python-Datei, die einige Initialisierungen automatisiert, dann unterteilen Sie diese automatisch generierten Klassen und führen den Rest der Initialisierung von Hand durch. Ich finde, dass dies eine gute Möglichkeit ist, die Eleganz von handgeschriebenem GUI-Code mit der Leichtigkeit der GUI-Code-Generierung zu verbinden.

Für den Code, den ich WingIDE verwende, ist es hilfreich, einen guten debuger und gute Quellcode-Vervollständigung zu haben, wenn man mit großen Bibliotheken (oder Frameworks, wenn man so will) wie wxPython beschäftigt.

Wenn Sie mehr Automatisierung (und so, hässlicher Code) wollen versuchen, die neueste Version von Boa, gibt es einige nette einleitenden Screencasts für sie bei ShowMeDo.com

+1

Eleganz der handschriftlichen GUI ??????? –

+3

Nun, wenn man es richtig macht ...;) –

+0

Wenn GUI-Code richtig gemacht wird, ist es so elegant wie jeder andere Code. – rectangletangle

1

VisualWx Versuchen. Ich denke, der GUI-Designer ist sehr gut; Die IDE ist jedoch ziemlich rudimentär (keine Code-Vervollständigung, Debugging usw.). Mein Arbeitsmuster ist VisualWx und ein guter Editor wie Komodo Edit/Netbeans/etc. öffnen Sie gleichzeitig und wechseln Sie zwischen ihnen nach Bedarf.

+0

VisualWX sieht cool aus, aber ist es noch aktiv? Die Website zeigt eine Alpha-Version vom April 2007, und es gibt nur 5 Nachrichten im Forum in den letzten sechs Monaten. –

+0

Ich habe es verwendet, um Konfigurationsdialoge für ein Spiel zu erstellen, das ich geschrieben habe, und es hat gut dafür geklappt. Wenn Sie die neuesten Sachen von neuen wxWindows Versionen wollen, dann wird es wahrscheinlich nicht Ihren Zwecken dienen. Aber es funktionierte gut für die Dinge, die ich ausprobiert habe, es ist kostenlos und die aktuelle Version scheint stabil zu sein (im Gegensatz zum Beispiel Boa Constructor). Mein Rat ist, es einfach zu versuchen und zu sehen, was Sie denken. – Brandon

5

Boa Constructor hat einen WxPython GUI Builder.

+1

Boa Constructor ist ein exzellentes Stück Arbeit, ähnlich wie Delphi, aber es basiert auf der Analyse von Python automatisch generiertem Quellcode, um zu verfolgen, was Sie entworfen haben. Wenn Sie WxPython aktualisieren, müssen Sie Ihren automatisch generierten Code manuell bearbeiten, damit er wieder funktioniert (wenn verschiedene Flags hinzugefügt oder die Dinge zwischen den Versionen umbenannt werden).Das kann ein echter Schmerz sein. – Nick

1

Ich benutze Eclipse PyDev als meine Python IDE (was wahrscheinlich aus nicht die beste Lösung ist, aber es ist durchaus anständig)

Für die GUI-Entwicklung habe ich wxGlade für ein mittelgroßes Projekt verwendet und festgestellt, dass es recht einfach ist, eines zu verwenden, das Sie die Konzepte von WxPython verstanden haben. Die XML-Generierung ist sehr nützlich, um den tatsächlichen GUI-Entwurf von der Programmlogik zu trennen.

Alle diese sind frei.

+0

Noch nicht herausgefunden, wie Python Interperter zu Eclipse hinzufügen, ist diese Installation def nicht idiotensicher. Es hat mich erwischt! – Iancovici

+0

Ich benutze nicht so viel Python-Interpreter, damit ich dir nicht helfen kann: P –

+0

habe gerade festgestellt, dass du wxGlade erwähnt hast, +1 für einfache Installation und freundliche Umgebung =) – Iancovici