Ich denke über Cross-Plattform mit netten Programmiersprachenbindungen (Java, Ruby und Python). Was wäre die "flachste" Lernkurve, aber dennoch genug Fähigkeiten, um die meisten Standard-GUI-Funktionen auszuführen? Was würdest du empfehlen? FOX, wx, Tk oder Qt?Praktisches GUI-Toolkit?
Antwort
Ich würde mit Qt gehen. Es funktioniert auf allen wichtigen Plattformen und wird ständig verbessert. Sie können auch sehr schnell anfangen. Es gibt Bindungen für Java, Ruby und Python.
Plus es ist kostenlos, wenn Sie Open-Source-Programme schreiben.
Ehrlich gesagt, habe ich Dinge mit Tk, Wx und Qt gebaut, und ich hasse sie alle gleichermaßen. Qt's visueller Editor ist der am wenigsten anstößige der drei, denke ich.
Die meisten professionellen Tk-Programmierer, die ich kenne, sind der Meinung, dass Tk so einfach zu benutzen ist, dass ein visueller Editor einfach in die Quere kommt. Ob das etwas über die relative Benutzerfreundlichkeit von Qt oder wx im Vergleich zu Tk aussagt, weiß ich nicht. –
Nun, ich mag sowieso immer noch Flüche. –
@Charlie Martin Angesichts Ihrer Geschichte weiß ich, warum :-) – lothar
Ich habe nicht mit Qt gearbeitet, also kann ich es nicht beurteilen, aber ich habe mit wx gearbeitet und es ist recht einfach zu arbeiten und immer noch recht schlank. Außerdem bietet Ihnen wxWidgets native Widgets auf jeder Plattform, was besonders für Macs ein großer Vorteil ist. Während die anderen das Look-and-Feel der nativen Plattform emulieren, verwendet wxWidgets direkt die nativen Widgets, was für viele Situationen schneller ist.
Nicht ganz richtig - Tk verwendet native Widgets auf Plattformen mit nativen Widgets (lesen Sie: Windows und der Mac). Es gibt keine Nachahmung, Sie bekommen den wirklichen Deal. –
Wenn Sie Java in Betracht ziehen, ist SWT ein hervorragendes plattformübergreifendes GUI-Toolkit.
WX den ganzen Weg! Ich bin kein GUI-Experte, Designer oder sogar ein "GUI-Typ", aber kürzlich musste ich ein Frontend für ein Produktkonfigurationswerkzeug schreiben (eigentlich ist es eine Sammlung von Werkzeugen, aber wir wollten eine einzige Schnittstelle für den Zugriff und die Ausführung das Einkaufszentrum).
Die Werkzeuge sind alle in Python geschrieben, also wandte ich mich natürlich an Python für die Benutzeroberfläche.
Ich entschied mich für wxPython ... ein "Import Wx" und ein paar Tutorials später, ich war Rahmen, Notebooks und Tastenfelder wie ich wusste, was ich tat.
Ich fand viele Beispiele, um mir zu helfen, wenn ich stecken blieb und die wxPython-Dokumente sehr nützlich waren - obwohl sie nur C++ - Dokumente waren, waren sie immer noch ziemlich intuitiv.
Eine schnelle Web-Suche wird Tonnen von wxPython Tutorials auftauchen, um Sie zu beginnen.
Ich habe die UI-Paar-Zeiten geschrieben und refaktoriert, aber ich hatte einen sauberen, funktionierenden Prototyp in < 1 Tag. Das Tool war plattformübergreifend und alle Fenster und Frames entsprachen dem nativen Fenstersystem (WinXP, Win2K3, Gnome, etc.) - ich war definitiv beeindruckt. Wenn ich jemals UIs in einer anderen Sprache schreiben muss, werde ich sicherlich nach einer wx-Implementierung suchen.
Ich habe die anderen nicht ausprobiert, aber ich stimme stark mit Joel überein. Weiter ist die Dokumentation mit wx wirklich gut. Sehen Sie sich meine Handhabe an - ich habe im Oktober ernsthaft mit Python gearbeitet, hatte begrenzte Programmiererfahrung außerhalb von SAS und bis Dezember hatte ich eine Anwendung mit einer gut funktionierenden und bisher stabilen GUI. – PyNEwbie
Tk ist immer noch eine sehr praktikable Lösung. Die Lernkurve hängt sehr von Ihnen ab. Viele Menschen, wie ich, können oder haben in etwa einem Tag alle Grundlagen von Tcl und Tk gelernt. Es gibt solche, die nach jahrelangem Gebrauch immer noch mit der Syntax kämpfen. Alles hängt davon ab, wie gut Sie Dinge "verlernen", die Sie mit traditionellen Sprachen wie C und Java gelernt haben. Wenn Sie in Ihrem Hintergrund lisp haben, können Sie wahrscheinlich Tcl an einem Morgen lernen.
Ein weiterer Vorteil für Tk ist die Tatsache, dass es mit Tcl, Perl, Python und Ruby (und anderen) funktioniert, so dass Sie nicht mit einer bestimmten Sprache festgefahren sind. Allerdings gibt es keinen direkten Port von Tk nach Java. Lerne es in einer Sprache und dein Wissen wird ziemlich leicht auf andere Sprachen übertragen. Tk kommt mit Tcl und Python aus der Box, also gibt es für diese Sprachen nichts anderes zu installieren.
ich sagen, aber nach den letzten Wochen Python/Tkinter Code mehrere hundert Zeilen zu schreiben viel ich, viel in Tcl Codierung bevorzugen, wenn es um GUIs kommt, aber das ist eher eine persönliche Sache als alles andere .
Weitere Informationen über Tk mit Tcl, Ruby und Perl http://www.tkdocs.com
wx sieht besser aus als Tk für meine Meinung in zum Beispiel Mac OS X, da Tk auf X11 läuft. Für Ruby wurde es über Rubygems installiert und einfach zu benutzen, aber es war noch einfacher, mit Tk zu beginnen, da es in Mac OS X eingebaut wurde. Ich werde wahrscheinlich für Wx für Python- oder Ruby-Projekte gehen. – davidhalldor
Tk hat einen Carbon-Port und Kakao ist in Arbeit, was bedeutet, dass Sie nicht mit X11 auf dem Mac stecken, es sei denn, Sie wollen. Besuchen Sie die Website tkdocs.com, um Beispiele für native Widgets auf dem Mac und Windows zu sehen. Und Tcl/Tk kommt mit OSX, so dass Sie nichts installieren müssen. –
Es sollte eine Art spezielles Abzeichen geben, um eine akzeptierte Antwort ohne Netzupdotes zu bekommen, wie diese jetzt zeigt. –
sehen Wenn Java Ihre bevorzugte Sprache ist, Groovy betrachten. Es ist eine wirklich nette dynamische Sprache, die auf Java aufsetzt, und hat einige wirklich nette Funktionen (SwingBuilder) in Bezug auf das Schreiben von GUIs. Wenn ich nicht in der Lage wäre, in Tcl/tk sehr produktiv zu sein, wäre Groovy meiner Meinung nach meine zweite Wahl, auch wenn ich kein großer Fan von Java oder Swing bin. Groovy sieht aus, dass die beiden eine Menge aushalten.
Weitere Informationen finden Sie unter GUI Programming with Groovy.
Ich finde Groovy wirklich interessant und werde auf jeden Fall nachsehen, wie man Swing GUI's macht. Viele großartige IDEs haben nette Swing-Tools/Addons wie IntelliJ und Eclipse. – davidhalldor
Ich empfehle Gtk. Es ist ein schönes, plattformübergreifendes, gut aussehendes Toolkit. Es wurde für Sprachbindungen entwickelt und ermöglicht die Erstellung von Sprachbindungen (pygtk, ruby / gtk2, java-gnome, gtk # und mehr). Gtk + ist relativ einfach zu erlernen.
Ich empfehle dringend das Buch Rapid GUI Programming python development. Author's Page.
Ich erinnere mich, dass Elsevier ein Python-GUI-Buch veröffentlicht hat, aber der Link und der Name entkommen mir jetzt.
Ich möchte nur erwähnen, dass Qt viel mehr als nur ein GUI-Toolkit ist. Sie bekommen so viel mehr davon, alles schön in das Framework integriert, dass es sich lohnt, es zu verwenden, wenn Sie die plattformübergreifende Entwicklung in Betracht ziehen. Das einzige Problem ist, dass wenn Sie es über seine Python-Bindung PyQt verwenden möchten, müssen Sie entweder für eine kommerzielle PyQt-Lizenz (teuer) oder GPL Ihren Code bezahlen.
können Sie "mehr" definieren. Was "mehr" bekommst du neben dem GUI-Toolkit? –
Gtk ist ein großartiges plattformübergreifendes Toolkit. Auch die Bindungen für Rubin sind alle in einem Rubygem erhältlich, so dass es sehr einfach zu installieren ist. Gtk wird für viele Programme wie Nautilus verwendet und hat viele, viele Möglichkeiten. Der Nachteil ist, dass Gtk so viel tut, dass es ein bisschen komplex ist.
Wenn ich eine GUI schreibe, weigere ich mich, jedes Widget von Hand zu codieren, ich bestehe auf einer grafischen Umgebung, um meine Formulare zu erstellen. Ich denke das bedeutet entweder Glade oder QT Creator. Ich habe QT Creator ausprobiert und fand es so langsam, dass ich es nicht benutzen konnte. Also baue ich meine Formulare mit Lichtung.
Wenn Sie Ihre Formulare in Glade erstellen, werden die Attribute des Formulars in einer XML-Datei gespeichert, die von Ihrer Sprache gelesen werden kann. Viele Sprachen haben "Gtk :: Builder" -Module, die die XML-Dateien lesen und dann GTK verwenden, um die Formulare zur Laufzeit auf dem Bildschirm anzuzeigen. Wenn Sie also glade verwenden, können Sie die Sprache Ihrer Wahl verwenden (C java, ruby, python), und Sie müssen nicht alle Ihre Formulare "handcodieren".
Angesichts der Wahl der Sprachen, würde ich Ruby wählen.
Fairerweise habe ich wxRuby oder Tk nicht versucht. Aber ich weiß, dass ich GUIs nicht von Hand programmieren möchte. Sie können meine Arbeit dazu auf visualruby.net sehen. Ich habe Ruby mit Lichtung verwendet, um viele GUIs zu erstellen.
Außerdem ist es kostenlos, wenn Sie Open-Source-Apps (freigegeben als GPL) schreiben. – Matt
seine LGPL, so ist es kostenlos, unabhängig davon, welche Lizenz Sie für Ihre App verwenden. – gbjbaanb
Qt4 bietet die beste BiDI-Unterstützung, wenn Sie RTL-Skripts unterstützen müssen. Die flexibelste und IMHO die reicher. – elcuco