SigMA hat geschrieben:Willst du komplett Plattform unabhängig Programmieren solltest du zu wxPython greifen, da das auf _jeder_ Oberfläche gleich ausschaut. Du kann also auf Linux schon sehen wie es unter Windows ausschaut
Hi!
@SigMA: Das kann ich so nicht ganz unterschreiben. wxPython greift unter Linux auf GTK zurück. Deshalb sieht eine wxPython-Anwendung unter Linux so aus wie andere GTK-Anwendungen halt so aussehen. Unter Windows sieht eine wxPython-Anwendung wie jedes andere Windows-Programm aus. Und das ist für viele Windows-DAUs enorm wichtig.
Fakt ist, dass wxPython-Anwendungen von der Oberfläche her unter Linux nicht von nativen GTK-Programmen oder unter Windows nicht von nativen Windows-Programmen unterschieden werden können.
Gefühlter "Fakt" ist, dass wxPython-Programme unter Windows sehr schnell sind und der Aufwand, ein wxPython-Programm auch unter Linux richtig schnell zu halten, sehr gering ist. Lange Listen, mit mehreren 1000 Einträgen sollte man in eine *virtuelle* Liste legen. Genauso auch mit großen Tabellen. Aber dafür ist alles vorbereitet. Man muss es nur verwenden.
Fakt ist, dass ich bis jetzt keine, nicht von mir verschuldeten, Abstürze von wxPython-Programmen beobachtet habe. Ich programmiere mit dem neuesten wxPython und in dem Stil, dass ich nicht alles mit "*" importiere, also auf die neue, empfohlene Art.
Vielleicht hat sich wxPython ja mit den neueren Versionen positiv weiterentwickelt? Ich kann es nicht sagen, da ich erst vor Kurzem zu wxPython gestoßen bin.
Mit einer guten IDE, die ständig anzeigt, welche möglichen Getter- und Setter-Methoden es gibt, ist es wirklich einfach, gut aussehende Programme mit wxPython zu schreiben. Allerdings empfinde ich es erst jetzt so einfach, da ich das Buch gelesen habe. Es macht wirklich einen Unterschied, ob jemand Schritt für Schritt erklärt, wie man ein Programm mit wxPython aufbauen kann und welche Widgets wie bedient werden können, als wenn man sich alles selber zusammensuchen muss.
Dass die Namen der Getter- und Setter-Methoden nicht aus der Luft gegriffen sind und meistens einer ziemlich logischen Namensgebung folgen, sollte dieser Code demonstrieren:
Code: Alles auswählen
textbox = wx.TextCtrl()
textbox.SetBackgroundColour("green")
textbox.SetFocus()
textbox.SetValue("Hallo Welt")
value = textbox.GetValue()
Da sehe ich gewisse Gemeinsamkeiten mit pyGTK.
Warum bin ich nicht bei pyGTK geblieben? Ganz einfach. wxPython stellt für den Entwickler eine ENORME erleichterung dar, da es bei wxPython viele gute Widgets (Steuerelemente) und Dialogfenster gibt, die man sich mit pyGTK mühsam selber zusammenprogrammieren muss.
Hier ein paar Beispiele:
Folgender Code gibt eine zentrierte Dialogbox mit einer Nachricht aus.
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import wx
app = wx.PySimpleApp()
wx.MessageBox(
message = u"Bitte bestätige diese Nachricht mit OK.",
caption = u"Nachricht"
)
Bei vielen Dialogen gibt es jeweils eine native Dialog-Klasse und eine Kurzform davon.
Klasse: wx.MessageDialog()
Instant-Version: wx.MessageBox()
Die Klasse kann man besser beeinflussen und die Kurzform ist für schnelle Dialoge, ohne Sonderwünsche. Wie man sieht, wird es einem Programmierer wirklich einfach gemacht. Genau das vermisse ich an pyGTK. Die Dinge die man ständig braucht, sind nicht einfach gehalten.
Eine einfache Listbox, also etwas das man ständig braucht, muss man sich mit pyGTK aus "Legosteinen" zusammenbauen, also immer wieder neu erfinden, oder den Code irgendwo sammeln und so wiederverwenden.
Eine InputBox vermisst man komplett. Man muss sich diese, grob gesagt, aus einem Dialog, einem Label und zwei Buttons zusammenbauen.
...
Allerdings, wer nur für Linux oder nur für Gnome Programme schreibt, der sollte natürlich auch das dafür vorgesehene Framework verwenden. Ganz klar. Das war für mich aber nie Thema. Meine Kunden sind typische Windows DAUs und meine Programme müssen primär unter Windows gut laufen. Ich setze ziemlich viel daran, dass meine Programme auch unter Linux lauffähig sind oder werden. Das ist aber (in Anführungszeichen) nur "Hobby". Meine Kunden interessiert das nicht. Und genau für diesen Zweck ist wxPython derzeit die beste Wahl für mich.
So uns jetzt ist Schluss mit dieser Lobesrede. Andere sollen auch noch zu Wort kommen.
lg
Gerold