Sto pensando a multipiattaforma con un bel linguaggio di programmazione (Java, Ruby e Python). Quale sarebbe la curva di apprendimento "più piatta" ma abbastanza potente per eseguire la maggior parte delle funzionalità GUI standard? Cosa vorresti ragazzi/ragazze raccomandare; FOX, wx, Tk o Qt?Toolkit GUI pratico?
risposta
Vorrei andare con Qt. Funziona su tutte le principali piattaforme e viene continuamente migliorato. Puoi anche iniziare molto velocemente. Ci sono collegamenti per Java, Ruby e Python.
Inoltre è gratuito se stai scrivendo programmi open source.
Onestamente, ho costruito cose con Tk, wx e Qt, e li odio tutti allo stesso modo. Il visual editor di Qt è il meno odioso dei tre che penso.
La maggior parte dei programmatori Tk professionisti che conosco sono d'accordo sul fatto che Tk sia così facile da usare che un editor visuale si metta in mezzo. Non so se questo dica qualcosa sulla relativa facilità d'uso di Qt o wx rispetto a Tk. –
Beh, mi piacciono comunque le maledizioni. –
@Charlie Martin Dato vostra storia so perché :-) – lothar
Non ho lavorato con Qt, quindi non posso giudicarlo, ma ho lavorato con wx ed è abbastanza facile da lavorare e ancora abbastanza snello. Inoltre, wxWidgets ti dà widget nativi su ogni piattaforma, il che è un vantaggio enorme (specialmente per i Mac). Mentre gli altri emulano il look-and-feel della piattaforma nativa, wxWidgets utilizza direttamente i widget nativi, che è più veloce per molte situazioni.
Non del tutto vero - Tk utilizza widget nativi su piattaforme che hanno widget nativi (leggi: Windows e Mac). Non c'è emulazione, ottieni il vero affare. –
Se si sta considerando Java, SWT è un eccellente toolkit di interfaccia grafica multipiattaforma.
WX fino in fondo! Non sono un esperto di GUI, designer o persino un "GUI guy", ma di recente avevo bisogno di scrivere un front-end per uno strumento di configurazione del prodotto (in realtà si tratta di una raccolta di strumenti, ma volevamo un'unica interfaccia per accedere ed eseguire il centro commerciale).
Gli strumenti sono tutti scritti in Python quindi, in modo naturale, mi sono rivolto a Python per l'interfaccia utente.
Mi sono stabilito su wxPython ... uno "import wx" e alcuni tutorial in seguito, stavo sbattendo cornici, quaderni e pulsantiere come se sapessi cosa stavo facendo.
Ho trovato molti esempi per aiutarmi quando mi sono bloccato ei documenti di wxPython sono stati molto utili - sebbene siano solo documenti C++, erano comunque piuttosto intuitivi.
Una rapida ricerca sul Web genererà un sacco di tutorial wxPython per iniziare.
Ho scritto e riattivato i tempi di coppia dell'interfaccia utente, ma ho avuto un prototipo di lavoro pulito in < 1 giorno. Lo strumento era multipiattaforma e tutte le finestre e i frame corrispondevano al sistema nativo delle finestre (WinXP, Win2K3, Gnome, ecc.) - Sono rimasto decisamente impressionato. Se dovessi mai scrivere le interfacce utente in qualsiasi altra lingua, cercherò sicuramente un'implementazione wx.
Non ho provato gli altri, ma sono d'accordo con Joel. Inoltre la documentazione con wx è davvero buona. Guarda il mio handle: ho iniziato a lavorare seriamente con Python in ottobre, ho avuto un'esperienza di programmazione limitata al di fuori di SAS e, a dicembre, ho avuto un'applicazione con un'interfaccia grafica ben funzionante e stabile. – PyNEwbie
Tk è ancora una soluzione molto valida. La curva di apprendimento dipende molto da te. Molte persone, come me, possono o hanno imparato tutti i fondamenti di Tcl e Tk in circa un giorno. Ci sono quelli che ancora combattono la sintassi dopo anni di utilizzo. Tutto dipende da quanto sei bravo a "disimparare" le cose che hai imparato con linguaggi tradizionali come C e Java. Se hai qualche lisc nella tua esperienza probabilmente puoi imparare Tcl in una mattinata.
Un altro vantaggio per Tk è il fatto che funzioni con Tcl, Perl, Python e Ruby (e altri) in modo da non rimanere bloccati in una determinata lingua. Tuttavia, non esiste una porta diretta da Tk a Java. Impara in una lingua e le tue conoscenze si trasferiranno abbastanza facilmente in altre lingue. Tk esce dalla scatola con Tcl e Python quindi per quelle lingue non c'è nient'altro da installare.
voglio dire, però, dopo aver scritto diverse centinaia di righe di codice Python/Tkinter nelle ultime settimane di gran lunga, molto preferisco codifica in Tcl quando si tratta di GUI, ma questo è più di una cosa personale di ogni altra cosa .
Per maggiori informazioni su Tk con Tcl, Ruby e Perl vedere http://www.tkdocs.com
wx sembra migliore di Tk per la mia opinione, ad esempio Mac OS X, poiché Tk gira su X11. Per Ruby è stato installato tramite rubygems e facile da usare, ma è stato ancora più facile per iniziare con Tk da quando è stato costruito nel Mac OS X. Io probabilmente andare per wx sia per progetti di Python o Ruby. – davidhalldor
Tk ha una porta di carbonio e cacao è in lavorazione, è non si è bloccato utilizzando X11 su Mac a meno che non si desidera che significa. Visita il sito Web tkdocs.com per vedere esempi di widget nativi su mac e windows. E Tcl/Tk viene fornito con OSX, quindi non è necessario installare nulla. –
Dovrebbe esserci una specie di badge speciale per ottenere una risposta accettata senza aumenti netti, come questo mostra proprio ora. –
Se Java è la lingua preferita, in considerazione Groovy. È un linguaggio dinamico davvero bello che si trova su Java e ha alcune caratteristiche davvero interessanti (SwingBuilder) rispetto alla scrittura di GUI. Se non fosse per il fatto che sono altamente produttivo in Tcl/tk, penso che Groovy sarebbe la mia seconda scelta personale anche se non sono un grande fan di Java o Swing di per sé. Groovy sembra prendere molto del tedio da entrambi.
Per ulteriori informazioni, vedere GUI Programming with Groovy.
Trovo che Groovy sia davvero interessante e controllerò sicuramente la creazione della GUI di Swing. Molti IDE fantastici hanno degli strumenti Swing/addons come IntelliJ ed Eclipse. – davidhalldor
Raccomando Gtk. Si tratta di un bell'ottimo toolkit multi-piattaforma e di bell'aspetto. È stato progettato tenendo in mente i collegamenti linguistici e consente di creare legami linguistici piacevoli (pygtk, ruby / gtk2, java-gnome, gtk # e altri). Gtk + è abbastanza facile da imparare.
Consiglio vivamente il libro Rapid GUI Programming python development. Author's Page.
Ricordo che Elsevier ha pubblicato un libro della GUI Python ma il link e il nome mi sfuggono ora.
Voglio solo dire che Qt è molto più di un semplice toolkit GUI. Si ottiene molto di più con esso, tutto ben integrato nel framework, che vale la pena utilizzarlo se si considera lo sviluppo crossplatform. L'unico problema è che se vuoi usarlo tramite PyQt di Python, dovrai pagare una licenza commerciale PyQt (costosa) o GPL il tuo codice.
puoi definire "altro". Cosa "altro" ottieni oltre al toolkit GUI? –
Gtk è un ottimo toolkit multipiattaforma. Inoltre, i leganti per il rubino sono tutti disponibili in un rubino, quindi è molto facile da installare. Gtk è usato per molti programmi come il nautilus e ha molte, molte possibilità. Il compromesso è che Gtk fa così tanto, che è un po 'complesso.
Quando scrivo un gui, rifiuto di codificare manualmente ogni widget, insisto su un ambiente grafico per costruire i miei moduli. Penso che significhi usare Glade o QT Creator. Ho provato QT Creator, e ho trovato che fosse così lento, che non potevo usarlo, quindi costruisco le mie forme con la radura.
Quando si compilano i moduli in glade, gli attributi del modulo vengono salvati in un file XML che può essere letto dalla propria lingua. Molte lingue hanno moduli "Gtk :: Builder" che leggono i file XML e quindi usano GTK per mostrare i moduli sullo schermo durante il runtime. Quindi, se usi glade, puoi usare la lingua che preferisci (C java, ruby, python) e non hai bisogno di "scrivere a mano" tutti i tuoi moduli.
Data la scelta delle lingue, sceglierei rubino.
Per correttezza, non ho provato wxRuby o Tk. Ma so che non voglio leggere le GUI a mano. Puoi vedere il mio lavoro su questo a visualruby.net. Ho usato ruby con glade per creare molte GUI.
Inoltre, è gratuito se stai scrivendo applicazioni open source (rilasciate come GPL). – Matt
è LGPL, quindi è gratuito indipendentemente dalla licenza che si utilizza per la propria app. – gbjbaanb
Qt4 ha il miglior supporto BiDI se è necessario supportare gli script RTL. Il più flessibile e IMHO il più ricco. – elcuco