IDE zur GUI Entwicklung mit gutem Compiler für Python 3

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
self.made_man
User
Beiträge: 7
Registriert: Mittwoch 11. Dezember 2013, 19:37

Vermutlich die häufigste Anfängerfrage, aber scheinbar bin ich zu doof zum googlen.

Ich habe bisher mit C gearbeitet, kenne auch C++. Für mein Hobby die Flugsimulation habe ich für X-Plane schon verschiedene Plugins entwickelt. Dazu verwende ich Code::Blocks als IDE. Alle diese "Programme" hatten bisher kein GUI. Nun möchte ich eine Applikation erstellen, die als normale EXE Datei under Windows ausgeführt werden kann, jedoch eine Fensteroberfläche hat. Die Applikation soll auch auf Mac OSX und Linux portierbar sein (möglichst einfach).

Ausgesucht hatte ich mir Python, da mir C++ zu umständlich und VB.NET zu verworren ist (und zudem nicht portierbar). Als GUI Framework stelle ich mir Qt vor.

Nun meine Fragen:
  1. Kann man mit Python 3 und Qt eine Windows EXE erzeugen?
  2. Ist Qt (also PySide) eine gute Wahl? Oder sind andere besser geeignet? Microsoft Windows Presentation Foundation wäre nett, aber nicht Mac OSX und Linux tauglich (oder?).
  3. Welche IDE könnt ihr empfehlen? Würdet ihr PyCharm empfehlen? Es taucht in den Video-Tutorials zu PySide auf.
  4. Welche Lektüre ist zu empfehlen (möglichst ein ePub)?
Wer mich anhand meines C++ Codes beurteilen möchte: Link zu GitHub

Carsten
Malachite
User
Beiträge: 34
Registriert: Sonntag 24. Juni 2012, 13:43
Wohnort: Berlin

self.made_man hat geschrieben:Die Applikation soll auch auf Mac OSX und Linux portierbar sein (möglichst einfach).
Dafür ist Python gedacht. .py-Dateien lassen sich üblicherweise mit jedem kompatiblen Python-Interpreter unabhängig vom Betriebssystem ausführen, solange man darauf achtet, keine betriebssystemspezifischen Module (wie win32) zu verwenden.
Kann man mit Python 3 und Qt eine Windows EXE erzeugen?
Dafür gibt es py2exe und cx_Freeze, aber man muss, glaube ich, trotzdem noch die entsprechenden Bibliotheken nachinstallieren, in diesem Fall Qt. Genau weiß ich es aber nicht, da ich sie nie verwende.
Ist Qt (also PySide) eine gute Wahl? Oder sind andere besser geeignet? Microsoft Windows Presentation Foundation wäre nett, aber nicht Mac OSX und Linux tauglich (oder?).
Die WPF ist tatsächlich Windows-only. Ansonsten sind die meisten Toolkits plattformabhängig. Du kannst natürlich Qt verwenden, das auch mein Favorit ist, es gibt aber auch noch andere wie GTK, wxWidgets, oder Tk. Python unterstützt alle genannten.
Welche IDE könnt ihr empfehlen? Würdet ihr PyCharm empfehlen? Es taucht in den Video-Tutorials zu PySide auf.
Die Frage ist: Brauchst du überhaupt eine IDE? Bei Python reicht meistens ein handelsüblicher Texteditor. Ich habe eine Weile mit Kate gearbeitet, das den Vorteil hat, dass es mit Python-Plugins erweitert werden kann. Seit einigen Monaten benutze ich Sublime Text, mit dem das ebenfalls möglich ist, das aber umgerechnet 50€ kostet. Wenn du damit leben kannst, dass das Programm dich von Zeit zu Zeit erinnert zu bezahlen, kannst du es aber auch kostenlos verwenden. Mit diesem Plugin ist es sogar Python-3-fähig.
Welche Lektüre ist zu empfehlen (möglichst ein ePub)?
Ich habe mich durch einige Tutorials gehangelt und mir nebenbei eine gedruckte Referenz angeschafft, die ich von vorne bis hinten durchgelesen habe. Vielleicht nicht unbedingt die beste Art zu lernen, aber sie funktioniert.
self.made_man
User
Beiträge: 7
Registriert: Mittwoch 11. Dezember 2013, 19:37

In Python habe ich mich bereits eingearbeitet mit dem Buch "Einführung in Python 3", das leider viele Fehler enthält, die beim Lesen nerven. Aber das Konzept schimmert durch und man lernt relativ effektiv.

Eine IDE nutze ich gerne, denn ein Texteditor allein ist nicht sehr komfortabel. Ich möchte, dass mir beim Schreiben des Codes Hilfe in Form von z. B. automatischer Vervollständigung und Codeprüfung geboten wird. So bin ich es von C++ und Code:Blocks gewöhnt. Auch will ich einen Breakpoint setzen können und vernünftig debuggen.

Zur Zeit probiere ich PTVS und SharpDevelop aus. SharpDevelop bietet eine leichte Erstellung der EXE, hat aber Schwächen im Editor. So werden manche Funktionen aus einem Modul nicht erkannt und bei der Auto-Vervollständigung nicht angeboten. Auch werden Vervollständigungen gemacht, die nicht sinnvoll sind.

PTVS habe ich noch nicht so intensiv probiert. Beide Lösungen haben ohnehin die starke Bindung an Microsoft, auch wenn der Dialekt IronPython durch die Anbindung an .NET Framework auf einem Windows System viele Möglichkeiten bietet. PyCharm habe ich noch nicht testen können. Hier erhoffe ich mir mehr Freiheit bei der Wahl des OS, damit meine künftigen Projekte auch auf einem Mac oder unter Linux weiterentwickelt werden können.

Vor allem aber möchte ich keinen komplexen Dialog per Hand im Editor zusammen friemeln.
BlackJack

@self.made_man: Vervollständigung und Codeprüfung hat in dynamischen Programmiersprachen so ihre Grenzen. Wie Du ja schon selbst festgestellt hast. Statische Prüfung, soweit möglich, kann man in jeden vernünftigen Editor einbinden.

Dialoge grafisch erstellen hat im Grunde nichts mit der IDE zu tun, denn das bietet kaum eine. Was auch Sinn macht, denn warum sollte man den Qt-Designer nochmal neu erfinden. Damit erstellt man die GUI und speichert sie als Datendatei. Dieser Vorgang ist unabhängig von der Programmiersprache mit der die GUI letztendlich verwendet wird. Man kann die Datendatei mit PyQt mit dem `uic`-Modul zur Laufzeit laden. Ich weiss nicht ob PySide da inzwischen etwas vergleichbares bietet.

Breakpoints braucht man für einen Debugger, und den braucht man in Python eigentlich nicht. `print()` beziehungsweise das `logging`-Modul, `type()`, und `ascii()` an strategischen Stellen reichen aus um heraus zu finden wo die Werte nicht dem entsprechen was man erwartet hat. Python ist in der Regel so ausdrucksstark, dass es oft schwierig wird überhaupt eine Stelle zu finden für einen Breakpoint.

Die Abstraktion die Python bietet, lässt die meisten Probleme denen man in primitiveren Sprachen mit Einzelschrittausführung auf die Schliche kommt, gar nicht erst auftreten. Das habe ich in den letzten 10 Jahren genau zweimal gebraucht. Und beide male war es Code der nicht nach typischem Python aussah, sondern eher wie C/C++/Pascal mit mehreren Indexvariablen die „manuell” und unter bestimmten Bedingungen verändert wurden und wo dann letztendlich irgendwelche Randfälle einen „off by one”-Fehler aufwiesen.

Wenn man dann tatsächlich mal auf *so* ein Problem stösst kann ich WinPDB empfehlen. Der Name ist vielleicht etwas irreführend weil das „Win” nicht für das Betriebssystem steht sondern für das Fenster in dem er läuft; und zwar auch unter anderen Plattformen. :-)
BlackJack

Ergänzend zu der Debugger-Frage bin ich gerade auf ein interessantes Modul aufmerksam gemacht worden: https://github.com/zestyping/q/blob/master/q.py
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ich wusste gar nicht, dass dieser

Code: Alles auswählen

sys.modules['q'] = Q()
Trick überhaupt möglich ist. Wenn ich mir das so als User anschaue ist mir da etwas mulmig :?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

@Leonidas: Alles sind doch nur Objekte, auch Module. :-) Im Quelltext von `q` wird ja auch ausdrücklich vor solcher Magie gewarnt. Das ist nicht für Produktionscode sondern eben zur schnellen Fehlersuche.

Wenn Dir so etwas Angst macht, solltest Du nicht ins `email`-Modul aus der Standardbibliothek schauen. Da wird dieser Trick nämlich benutzt in dem für die ganzen Untermodule `LazyImporter`-Exemplare in `sys.modules` hinterlegt werden, die das *echte* Modul beim ersten Zugriff auf das jeweilige Objekt importieren und dann den `LazyImporter` wieder ersetzen. Evil magic. :-)
Antworten