Ist wxPython unter Linux eine gute Wahl?

Plattformunabhängige GUIs mit wxWidgets.
JR
User
Beiträge: 286
Registriert: Montag 20. Februar 2006, 16:43
Wohnort: Berlin

Donnerstag 7. Dezember 2006, 00:14

Hallo!

Ich gedenke, in Zukunft neben Windows einen richtigen Einstieg in Linux zu starten. Derzeit erstelle ich meine Entwicklungen mit Python, wxPython, MySQL mit Hilfe von Eclipse.

Nun zur Frage:
Nun habe ich mir zielgerichtet einige Beiträge (u.a. http://www.python-forum.de/topic-5981.h ... ight=linux) durchgelesen. Auch mein Chef meinte heute zu mir, dass er eher nicht so Überzeugendes von der Kombination wxPython und Linux gelesen hätte.

Ich weiß aus eigener Erfahrung, dass nicht wenige Funktionen oder Parameter in der wxPython-Doku mit einem Kommentar à la "this function works only under Windows" o.ä. versehen sind.

Was sagt Ihr dazu. Gibt es da Erfahrungen? Gerold? Du hast mich mit einem sehr überzeugenden Beitrag dazu gebracht, wx Python zu wählen. Und bisher bin ich auch sehr sehr zufrieden. Was sagst du dazu?

Nun gut, ich bin sehr gespannt auf eure Antworten!

Viele Grüße
Jamil
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Donnerstag 7. Dezember 2006, 10:16

Hi Jamil!
JR hat geschrieben:Ich gedenke, in Zukunft neben Windows einen richtigen Einstieg in Linux zu starten.
Das ist eine wirklich gute Idee. Wir müssen ja nicht alle die Lizenzpolitik von Microsoft mitmachen.
JR hat geschrieben:Auch mein Chef meinte heute zu mir, dass er eher nicht so Überzeugendes von der Kombination wxPython und Linux gelesen hätte.
wxWidgets und wxPython entwickeln sich weiter und sind schon längst nicht mehr auf dem Stand von vor ein paar Jahren.
JR hat geschrieben:Ich weiß aus eigener Erfahrung, dass nicht wenige Funktionen oder Parameter in der wxPython-Doku mit einem Kommentar à la "this function works only under Windows" o.ä. versehen sind.
Es betrifft vor allem Dinge, die generell nur unter Windows verfügbar sind. Z.B. unterstützt das TextCtrl unter Windows auch "Rich Text", weil es unter Windows das native RichTextCtrl gibt. Warum soll wxPython nicht darauf zu greifen? Es gibt ja auch Programmierer, die nicht vor haben, Programme auch unter Linux laufen zu lassen. MDI-Fenster sind eine Windows-Erfindung. Diese gibt es unter Linux im GTK einfach nicht. Deshalb wird unter Linux stattdessen automatisch ein Notebook mit Tabs angezeigt.
GTK versieht Stock-Buttons (z.B. OK, Abbrechen oder Öffnen) automatisch mit Bildern. Da Windows das nicht kann, werden diese im Windows einfach nicht angezeigt.

Es wäre einfach gewesen, im wxPython nur die Schnittmege der Funktionen zur Verfügung zu stellen, die unter Linux, Mac und Windows auf jeden Fall funktionieren. Wäre das die Lösung gewesen? Ich glaube nicht! Damit hätte sich wxPython ziemlich abgewertet.

Ich programmiere unter Windows, da alle meine Kunden Windows einsetzen und meine Programme unter diesem Betriebssystem zu 100 Prozent funktionieren müssen. Ich achte darauf, dass ich in die Programme keine essenziellen Dinge einbaue, die nur unter Windows laufen. Ich verzichte also auf jeden Fall auf MDI-Anwendungen. Stattdessen arbeite ich auch unter Windows mit Notebooks und darin öffne ich Panels statt MDIChildFrames. Seit neuestem gibt es im wxPython den ``AUI_DockingWindowManager``. Das könnte eine gute Alternative zu MDI-Fenstern sein, wenn mehrere Panel gleichzeitig angezeigt werden müssen.

Zwischendurch probiere ich die Programme immer wieder mal unter Linux aus. Meist genügen ein paar kleine Anpassungen um das Programm dann auch unter Linux laufen zu lassen.

wxWidgets und wxPython wurden mit dem Ziel programmiert, ein GUI-Framework zu schaffen, welches es den Programmierern erlaubt, Programme für mehrere Betriebssysteme zu schreiben. Ich finde, der Spagat ist ziemlich gut gelungen.

wxWidgets greift unter Windows auf die nativen Windows-Steuerelemente zu. wxWidgets greif unter Linux auf GTK zu. wxWidgets-Programme sehen also unter Windows wie Windows-Programme aus und unter Linux wie GTK-Programme. Das gefällt den Anwendern, da sie diese Oberflächen gewohnt sind.

Ich kenne nichts vergleichbares mit so vielen Möglichkeiten. TkInter scheidet aus, da es wirklich nur die Schnittmenge an Funktionen bietet und ich mit TkInter schon nach wenigen Tagen an die Grenzen gestoßen bin. GTK läuft zwar unter Linux super, ist aber unter Windows ein bischen zäh. Ich arbeite unter Windows mit GIMP und Inkscape. Ich weiß also wovon ich rede. Noch dazu habe ich vor wxPython mit pyGTK programmiert. Ich musste es aufgeben, da sogar einfachste Programme auf langsameren Computern (1000 MHZ) unerträglich langsam starteten. GTK sieht gut aus und ist nicht schlecht wenn du nur eine einfache GUI brauchst. Es gibt aber leider kein einfach zu verwendendes Tabellen-Widget und das Treeview ist auch nicht gerade einfach zu verwenden. Die Dialoge zum Öffnen oder Speichern von Dateien sind zum kotzen -- auch wenn sie jetzt verbessert wurden. QT ist mir zu teuer. Was bleibt also noch übrig?

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Donnerstag 7. Dezember 2006, 11:17

Ich hab zwar mit GUI Programmierung nicht viel zu tun, kann es aber nicht lassen, meinen Senf dazu zu geben ;) Gerade weil Posts von gerold immer lesenswert sind *schleim*
gerold hat geschrieben:Es wäre einfach gewesen, im wxPython nur die Schnittmege der Funktionen zur Verfügung zu stellen, die unter Linux, Mac und Windows auf jeden Fall funktionieren.
Wäre es nicht gut, einen Schalter zu haben, um zu sagen: "Ich will nur den kleinsten gemeinsamen Nenner" oder "Ich will nur sachen die mit Linux gehen"... Wäre auch nett, oder?

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Donnerstag 7. Dezember 2006, 12:00

jens hat geschrieben:Wäre es nicht gut, einen Schalter zu haben, um zu sagen: "Ich will nur den kleinsten gemeinsamen Nenner" oder "Ich will nur sachen die mit Linux gehen"... Wäre auch nett, oder?
Hi Jens!

Ich wüsste nicht wie man so etwas realisieren könnte.

Im wxPython kann man das Verhalten von Widgets mit Flags einstellen. Was welches Flag bewirkt, steht in der Doku. Wenn ein Flag sich unter verschiedenen Betriebssystemen anders verhält, dann steht das auch in der Doku. Viel mehr kann man, glaube ich, nicht machen.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Donnerstag 7. Dezember 2006, 12:04

gerold hat geschrieben:Ich wüsste nicht wie man so etwas realisieren könnte.
Wie gesagt ich hab mit GUIs nichts am Hut... Aber könnte es doch so machen:

Angenommen man hat festgelegt: "Ich will explizit nur Linux Sachen nutzten"
Wenn man nun ein Widget benutzt, oder eine Eigenschaft, die es aber nur für Windows gibt, dann wird eine Exception raus gespuckt (oder vielleicht nur ein Warnung)

Ist nur eine Idee, keine Ahnung ob Sinnvoll... :P

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Donnerstag 7. Dezember 2006, 12:39

jens hat geschrieben:Wenn man nun ein Widget benutzt, oder eine Eigenschaft, die es aber nur für Windows gibt, dann wird eine Exception raus gespuckt (oder vielleicht nur ein Warnung)
Hi Jens!

Du weißt ja -- die Welt ist nicht perfekt. Das wäre sicher ein interessantes Feature. Wenn es das irgendwann mal geben sollte, dann werde ich es sicher auch einsetzen.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
JR
User
Beiträge: 286
Registriert: Montag 20. Februar 2006, 16:43
Wohnort: Berlin

Donnerstag 7. Dezember 2006, 12:55

Hallo Gerold!

Zunächst einmal vielen Dank für deine schnelle und lange Antwort!
gerold hat geschrieben: Ich arbeite unter Windows mit GIMP und Inkscape.
Ist das ein Tipp, mit welchen Bildbearbeitungsprogrammen ich künftig unter Linux arbeiten könnte? Habe gerade kurz überflogen (Screenshot angesehen), was Wikipedia zu GIMP und Inkscape liefert.

Das Performanceproblem im Zusammenhang mit vielen Datensätzen in einem wx.ListCtrl (s.o. meine Referenz zu einem Forumbeitrag) liegt also nicht an wxPython?

Was passiert, wenn ich einen Parameter benutze (z.B. wx.LC_AUTOARRANGE bei einer wx.ListCtrl) und das Programm unter Linux laufen lasse?
Bleibt der Parameter wirkungslos oder stürzt das Programm ab?

Linuxderivate:
Es gibt wohl unzählige Linuxausführungen. Was benutzt ihr? Und warum?
Ist es Python oder wxPython wurscht, ob ich Kubuntu, Debian, RedHat, SuSe etc. benutze?

Na dann allen noch ein frohes Schaffen!
Jamil
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Donnerstag 7. Dezember 2006, 13:07

JR hat geschrieben:
gerold hat geschrieben: Ich arbeite unter Windows mit GIMP und Inkscape.
Ist das ein Tipp, mit welchen Bildbearbeitungsprogrammen ich künftig unter Linux arbeiten könnte? Habe gerade kurz überflogen (Screenshot angesehen), was Wikipedia zu GIMP und Inkscape liefert.
Ja, GIMP ist quasi Standard für die (Raster-)Bildbearbeitung mit freier Software.
Inkscape scheint sich zum Gleichen in Richtung Vektorgraphik entwickeln.
Das Performanceproblem im Zusammenhang mit vielen Datensätzen in einem wx.ListCtrl (s.o. meine Referenz zu einem Forumbeitrag) liegt also nicht an wxPython?
Ich habe mit nativem GTK (PyGTK) auch hin und wieder Probleme mit Listen. Gut möglich, dass das eine Schwäche von GTK selbst ist.
Was passiert, wenn ich einen Parameter benutze (z.B. wx.LC_AUTOARRANGE bei einer wx.ListCtrl) und das Programm unter Linux laufen lasse?
Bleibt der Parameter wirkungslos oder stürzt das Programm ab?
Letzteres würde mich jetzt schwer wundern.
Linuxderivate:
Es gibt wohl unzählige Linuxausführungen. Was benutzt ihr? Und warum?
Ist es Python oder wxPython wurscht, ob ich Kubuntu, Debian, RedHat, SuSe etc. benutze?
Ja. Solange es korrekt installiert ist -- und das kriegen die diversen Paketmanager meist gerade noch hin, wobei hier IMO apt (Debian, Ubuntu) und portage (Gentoo) den RPM (Suse, Redhat) um Längen schlagen -- funktioniert es mit jeder Distribution.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 7. Dezember 2006, 13:49

gerold hat geschrieben:Die Dialoge zum Öffnen oder Speichern von Dateien sind zum kotzen -- auch wenn sie jetzt verbessert wurden.
Die Dialoge waren Mist, das stimmt. Inzwischen sind sie etwas besser - stimmt auch. Aber nutzt wxGTK nicht exakt die gleichen? Somit würde dieses Argument für wxWidgets unter Linux ebenso zutreffen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Donnerstag 7. Dezember 2006, 13:53

Hi Jamil!
JR hat geschrieben:Das Performanceproblem im Zusammenhang mit vielen Datensätzen in einem wx.ListCtrl (s.o. meine Referenz zu einem Forumbeitrag) liegt also nicht an wxPython?
Doch, es liegt an wxPython/wxWidgets. Aber im Buch "wxPython In Action" auf Seite 420 (Kapitel 13.5) steht die Lösung dafür. --> "virtual list control". Wenn du dir den von dir aufgezeigten Thread genau durchliest, dann wirst du dort auch auf mehrere Lösungen hingewiesen.
JR hat geschrieben:Bleibt der Parameter wirkungslos oder stürzt das Programm ab?
Die Parameter, die ich kenne, bleiben einfach nur wirkungslos. Allerdings glaube ich, dass du glaubst, dass es so viele Unterschiede gibt. Das stimmt nicht. Ich schätze, dass so um die 98% von wxPython unter Windows und Linux ohne Anpassung laufen.

- Das TextCtrl kann unter Windows zusätzlich mit dem RichText-Format umgehen. Dafür gibt es aber auch `wx.richtext`, was unter Windows und Linux funktioniert. Dann gibt es auch noch das wx.StyledTextCtrl (wx.stc), das Scintilla mit dessen Formatierungsmöglichkeiten in wxPython einbindet.
- Unter Windows kann man Flash-Animationen mit dem wx.lib.flashwin.FlashWindow einbinden.
- Unter Windows kann man PDF-Dateien mit Hilfe des wx.lib.pdfwin.PDFWindow ansehen.
- Unter Windows kann man den Internet Explorer als Widget mit einbinden.
- Mit ``wx.activex`` lassen sich ActiveX-Steuerelemente unter Windows einbinden.
- Dann gibt es noch ein paar Style-Flags, die meist nur unter Windows und Linux, nicht aber unter OSX funktionieren. Bei manchen Style-Flags steht auch dabei, dass diese nur unter Windows funktionieren. Wie viele das sind, kann ich im Moment nicht sagen. Mein Gefühl sagt mir allerdings, dass es nicht besonders viele sein werden.
JR hat geschrieben:Was benutzt ihr? Und warum?
Ich bin jetzt von Gentoo und Debian auf Ubuntu umgestiegen. Auch auf Serverseite. Es ist ziemlich einsteigerfreundlich, aktuell und die Datei-Umgebung ist auf UTF-8 eingestellt.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Donnerstag 7. Dezember 2006, 13:59

Leonidas hat geschrieben:Aber nutzt wxGTK nicht exakt die gleichen? Somit würde dieses Argument für wxWidgets unter Linux ebenso zutreffen.
Hi Leonidas!

Stimmt. Ich habe das eher aus der Sicht des Windows-Anwenders gesehen. wxPython verwendet unter Windows die Dialoge von Windows. pyGTK zeigt aber auch unter Windows den GTK-Dialog zum Öffnen oder Speichern an. Das, glaube ich zumindest, verwirrt einfache Windows-Anwender schon sehr. Ich muss zugeben, dass es mich auch schon ab und zu verwirrt hat.

Wie nachteilig das ist, sehe ich ja ständig beim Verwenden von GIMP unter Windows. Der Speichern- oder Öffnen-Dialog ist nicht unbedingt benutzerfreundlich. Das liegt aber eher an den Programmierern von Gimp und nicht direkt an GTK. Der neue Öffnen-Dialog von GTK ist da schon um einiges besser. Da kann man nichts dagegen sagen.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 7. Dezember 2006, 14:00

JR hat geschrieben:Ist das ein Tipp, mit welchen Bildbearbeitungsprogrammen ich künftig unter Linux arbeiten könnte? Habe gerade kurz überflogen (Screenshot angesehen), was Wikipedia zu GIMP und Inkscape liefert.
Ja, GIMp ist eigentlich ganz in Ordnung. Ein Gimp-Bild hat sogar letztens den Retusche-Wettbewerb im Spiegel gewonnen.
JR hat geschrieben:Es gibt wohl unzählige Linuxausführungen. Was benutzt ihr? Und warum?
Ist es Python oder wxPython wurscht, ob ich Kubuntu, Debian, RedHat, SuSe etc. benutze?
Ich benutze nur Debian und Abkömlinge. In der praxis sieht das so aus, das ich einen alte Desktop-Rechner ohne GUI habe auf dem Debian Sarge läuft. Daneben habe ich den Rechner von dem ich gerade poste - ein Ubuntu. Zuletzt habe ich auf meinem vServer und auf meinem Router ein Debian Sarge (auf denen ich Python 2.5 habe, sind also im Moment die modernsten).
Ansonsten macht es keinen großen Unterschied welche Distribution du nutzt. Der Vorteil von Ubuntu ist nur, dass sie meist vergleichsweise aktuelle Versionen von Python mitliefern.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 7. Dezember 2006, 14:04

gerold hat geschrieben:Stimmt. Ich habe das eher aus der Sicht des Windows-Anwenders gesehen. wxPython verwendet unter Windows die Dialoge von Windows. pyGTK zeigt aber auch unter Windows den GTK-Dialog zum Öffnen oder Speichern an. Das, glaube ich zumindest, verwirrt einfache Windows-Anwender schon sehr. Ich muss zugeben, dass es mich auch schon ab und zu verwirrt hat.
Man könnte zwar die Windows-Standarddialoge in PyGTK unter Windows nutzen - aber genau das ist ja eben nicht gewünscht. PyGTK soll unter jedem System gleich aussehen, wobei man natürlich Engines (=Themes) verwenden kann, die dann anders aussehen. Aber wenn man ein GTK-Fenster mit, sagen wir mal, Metal-Engine verwendet, dann würde der Standarddialog von Windows natürlich sehr auffallen bzw. deplaziert wirken.

Ansonsten kann ich deine Einwände natürlich gut verstehen. Das TreeView Widget ist ziemlich genial, aber es ist nicht einfach zu verstehen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
JR
User
Beiträge: 286
Registriert: Montag 20. Februar 2006, 16:43
Wohnort: Berlin

Donnerstag 7. Dezember 2006, 14:05

Hallo nochmal!

Gerold, wie gut, dass ich wxPython-InAction gekauft und die Beispiele runtergalden habe, wie schlecht, dass ich den Thread zu schnell gelesen habe.

Danke, Merke mir die Namen der Tools (Bildbearbeitung).

Ehrlich gesagt habe ich noch ziemlich starke Berührungsängste, was es Linux anbelangt :-(

Ich habe in der Uni ein Semester auf den Rechnern dort meine ersten "Erfahrungen" mit Linux gemacht.

Für eine Übergangszeit wird Linux erst auf meinem Desktoprechner zu Hause installiert. An Debian denke ich hierbei derzeit, werde aber nochmal nachlesen.

Da eine gescheite Einarbeitung (Treiberverwaltung, Netzwerkverwaltung etc.) oder das Finden von Ersatz für bisher verwendete Programme länger dauert, bekommt mein häufiger genutzter Schlepptop Linux dann später parallel zu Windows installiert.

Wenn euch spontan ein (meist aus schmerzlicher oder nerviger Erfahrung entstandener) Hinweis einfällt, dann wäre ich sehr dankbar!

Also dann bis denn
Jamil
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 7. Dezember 2006, 14:18

JR hat geschrieben:Wenn euch spontan ein (meist aus schmerzlicher oder nerviger Erfahrung entstandener) Hinweis einfällt, dann wäre ich sehr dankbar!
Vielleicht für den Einstieg lieber Ubuntu verwenden...
Ansonsten ist das Debianforum und Ubuntuusers tollen Foren, persönlich bevorzuge ich aber ersteres :)

P.S.: Aber bitte gehen wir in diesem Thread nicht mehr weiter darauf ein - wir driften nach Offtopic ab. Wenn deine Frage gelöst ist, wunderbar. Wenn wir uns über Linux unterhalten wollen, gerne, aber dann in Offtopic.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Antworten