Domanda

Domanda semplice:

  • Quali API della GUI Python sono disponibili e quali sono i vantaggi di una determinata API?

Non sto cercando una guerra religiosa qui, voglio solo avere una buona idea di tutto ciò che è là fuori in termini di API GUI Python.

È stato utile?

Altri suggerimenti

Ho usato Tkinter e wxPython.Tkinter è piuttosto semplice e non utilizza widget nativi.Ciò significa che le applicazioni Tkinter avranno lo stesso aspetto su qualsiasi piattaforma: potrebbe sembrare allettante, ma in pratica significa che hanno un aspetto brutto su qualsiasi piattaforma :-/ Tuttavia, è abbastanza facile da usare.ho trovato Pensare in Tkinter molto utile quando stavo imparando, perché non avevo mai programmato con la GUI prima.Se però ti sono familiari cose come cornici, algoritmi di layout, pulsanti e associazioni, puoi saltare questo passaggio.

Puoi potenziare Tkinter con Tix (ma attenzione, Tix non funziona bene con py2exe).Dai un'occhiata anche a Python Megawidgets, che crea alcuni controlli più avanzati utilizzando le nozioni di base di Tkinter.

Infine, Tkinter gioca bene con la shell:puoi avviare l'interprete, fare cose come 'import tkinter' 'tk = tkinter.Tk()' ecc.e costruisci la tua GUI in modo interattivo (e sarà reattiva).(Penso che questo non funzioni se usi IDLE, però)

wxPython ha un aspetto molto più bello e viene fornito con una gamma di controlli molto più ampia.È multipiattaforma (anche se sembra un po' complicato sul mio Mac) e utilizza controlli nativi su ciascuna piattaforma.È un po' confuso, però.Viene inoltre fornito con un'applicazione demo che mostra la maggior parte delle sue funzionalità e fornisce un banco di prova su cui sperimentare.Alcuni pensieri specifici su wxPython:

  • Esistono tre (?) modi diversi per disporre i widget.Ignoratene due;basta usare i sizer.E anche in questo caso, puoi realizzare praticamente qualsiasi layout utilizzando solo BoxSizer e GridBagSizer.
  • Tutti i widget wx hanno un ID.Non è necessario che ti interessi quali siano gli ID, ma ai vecchi tempi (penso) avevi bisogno di saperlo, quindi alcuni vecchi codici saranno disseminati di assegnazioni di ID esplicite.E la maggior parte del codice demo avrà -1 ovunque come parametro ID (nonostante il fatto che tutti i metodi abbiano ID come parametro parola chiave il cui valore predefinito è comunque -1).
  • Assicurati di avere la documentazione standard di wxWidgets e la demo di wxPython: ti servono entrambi.
  • Se vuoi usare wxPython con py2exe e vuoi che abbia un bell'aspetto su Windows XP, hai bisogno di un po' di trucchetto nel tuo setup.py.Vedere Qui

PyQt è eccellente se hai esperienza o interesse per Qt.

http://www.riverbankcomputing.co.uk/software/pyqt/intro

La maggior parte delle API GUI Python saranno wrapper delle API GUI c/c++ più comuni.Hai un wrapper Python per gtk, un wrapper Python per qt, un wrapper Python per .NET, ecc. Ecc.

Quindi dipende davvero da quali sono le tue esigenze.Se stai cercando il modo più semplice per disegnare widget dall'aspetto nativo su Linux, Mac e Windows, scegli wxPython (wrapper Python per WX Widgets).Se la multipiattaforma non è una delle tue esigenze, altre librerie potrebbero essere più utili.

Invece di pubblicare un elenco delle opzioni, darò la mia modesta opinione:

Sono innamorato di wxPython.

Ho usato Qt in C++ e Tk ai tempi di Tcl, ma ciò che mi fa davvero piacere wxPython è la demo che ottieni con esso.Nella demo puoi sfogliare tutti i diversi widget, frame ecc. che fanno parte del framework, vedere il codice sorgente e vedere effettivamente come appare mentre è in esecuzione.

Ho avuto alcuni problemi nel compilare e installare la versione Linux, ma ora che l'ho disponibile la uso sempre.Ho utilizzato wxPython per applicazioni di analisi di piccoli dati e ho scritto diversi strumenti interni relativi al confronto dei risultati dei test, all'unione del codice sorgente, ecc.

Ho trovato questo link da molto tempo: http://www.awaretek.com/toolkits.html.Suggerisce una presa in base ai tuoi criteri.Per me suggerisce sempre wxPython.Ad ogni modo ti dà un sacco di punteggi sui vari toolkit.Ciò che è giusto per me potrebbe non essere giusto per te.Ma ti dà il punteggio di tutti i takeit in base ai tuoi criteri, quindi se per qualche motivo non ti piace il toolkit principale puoi vedere quali sono più vicini ai tuoi criteri.

QT/GTK/WxWidgets (precedentemente wxWindows) sembrano essere tra i toolkit GUI multipiattaforma più maturi.L'unico problema è che nessuno è installato con l'installazione predefinita di Python, quindi potrebbe essere necessario compilare le librerie.Se vuoi qualcosa senza installazione richiesta che venga semplicemente eseguito, allora vai con TKInter perché, come è stato detto, è installato per impostazione predefinita con Python.

Ad ogni modo i miei criteri erano 9 sulla facilità d'uso, 10 sulla maturità della documentazione/widget, 10 sulla base installata, 5 sui generatori di codice gui, 10 sull'aspetto nativo per entrambi Windows/linux e 1 e 5 per gli ultimi due, io non sono un grande appassionato di Mac OSX (anche con un 10 qui suggerisce wxpython).

PythonCard è davvero facile da usare.Questo è quello che consiglierei.

Ecco il loro resoconto:

PythonCard è un kit di costruzione GUI per la costruzione di applicazioni desktop multipiattaforma su Windows, Mac OS X e Linux, utilizzando il linguaggio Python.

Il motto Pythoncard è "le cose semplici dovrebbero essere semplici e complesse dovrebbero essere possibili".

PythonCard fa per te se si desidera sviluppare applicazioni grafiche in modo rapido e semplice con un minimo di sforzo e codifica.L'ipercard di Apple è una delle nostre ispirazioni;Semplice ma potente.

PythonCard utilizza wxPython.Se hai già familiarità con Wxpython, pensa a Pythoncard come un modo più semplice di fare programmi WXPYTHON con molti campioni e strumenti già in atto per la copia e la sottoclasse e gli strumenti per aiutarti a creare applicazioni multipiattaforma.

EasyGUI è diversa dalle altre GUI in quanto EasyGUI NON è guidata dagli eventi.Ti consente di programmare in modo lineare tradizionale e di creare finestre di dialogo per input e output semplici quando necessario.Se non hai ancora imparato il paradigma basato sugli eventi per la programmazione della GUI, EasyGUI ti consentirà di essere immediatamente produttivo con attività di base.Successivamente, se desideri effettuare la transizione a un paradigma GUI basato sugli eventi, puoi farlo con un pacchetto GUI più potente come anygui, PythonCard, Tkinter, wxPython, ecc.

Sito web EasyGui

WX ha problemi sul Mac.

Ho dato un'occhiata qui, perché voglio ottenere un'API GUI basata sugli eventi per fare alcune cose in Python.Ho installato wx sul mio Mac come parte di MatPlotLib, ma non funziona correttamente.Non prenderà input dalla tastiera.L'ho installato tre volte su tre diversi sistemi operativi Mac e, sebbene abbia funzionato la prima volta, le altre due volte ho riscontrato questo problema.

Questa versione la sto utilizzando con la distribuzione di Enthink, quindi non è stata necessaria alcuna installazione.Quando l'ho installato separatamente, c'erano così tante installazioni dipendenti che l'installazione è stata faticosa.

Da quello che ho letto qui, proverò Tkinter, poiché deve essere semplice e multipiattaforma, ma ho pensato di condividere semplicemente quanto sopra con te.Mi piace il sistema operativo Mac per una serie di ragioni diverse, ma gli strumenti Python si installano molto più facilmente su Windows (e probabilmente su altri Linux).Ho solo pensato di dare una prospettiva Mac qui.

Mi piace wxPython o Tk.

Tk viene fornito con la distribuzione Python standard quindi non è necessario installare nient'altro.

wxPython (wxWigets) sembra molto più potente e sembra molto più carino.Funziona bene anche su più piattaforme (anche se non perfettamente perché utilizza diverse API grafiche sottostanti su tipi di sistemi diff)

Preferisco PyGTK, perché sono un tipo GNOME.Usare PyGTK mi sembra molto pitonico.L'organizzazione del codice sembra coerente, la documentazione è pulita e approfondita ed è un toolkit molto semplice a cui abituarsi (tranne forse Treeviews).

Non esiste un creatore di GUI facile da usare per Python.È davvero sorprendente considerando che piccoli linguaggi di scripting come AutoIt e AutoHotkey hanno creatori di GUI fantastici e molto semplici da usare.Forza, seguaci di Python, non potete fare di meglio?

Ho lavorato con wxPython ormai da qualche anno e mi piace parecchio.La cosa migliore di wxPython è che l'interfaccia utente sembra nativa sulle diverse piattaforme su cui gira (eccellente su Windows e Linux anche se non altrettanto buona su OS/X).

L'API manca di coerenza, ma ci si abitua rapidamente.

Puoi controllare Test (spina spudorata, dato che è un mio prodotto) per avere un'idea di cosa si può fare con wxPython (anche se devo dire, con un bel po' di sforzo).

wxPython, e presumo che anche PyGTK, possa utilizzare wxGlade per aiutarti a progettare la maggior parte delle interfacce utente che creerai.Questo è un grande vantaggio.Non devi imparare a codificare manualmente la GUI finché non sei pronto.Ho realizzato diversi programmi GUI direttamente da wxGlade prima di sentirmi abbastanza a mio agio nel funzionamento di wxPython per provare a codificare manualmente.

PyQt ha un dispositivo di layout grafico simile ma non ho mai avuto fortuna nel far compilare correttamente PyQt.Mancavano anche tutorial e documentazione che mostrassero come creare il codice Python finale;molti dei documenti che ho trovato si riferivano alla versione C++ di Qt.

Tkinter va bene per programmi veloci e sporchi ma, realisticamente, se usi wxGlade potrebbe essere più veloce realizzare il programma con wxPython.Come minimo, puoi usare wxGlade per mostrare una rappresentazione visiva del programma a un client piuttosto che prenderti il ​​tempo per codificare manualmente il programma "fittizio".

Esistono gui-api specifiche di Python come kivy (successore o pymt), pygui (basato su pyrex), pyui e nufox, che non sono paragonabili ai toolkit più robusti come wxpython, pyqt, pygtk e tkinter.

Sono solo strumenti extra opzionali.

L'unica cosa unica che li riguarda è che si tratta di API specifiche di Python, proprio come ci sono prima (api specifiche di Perl) e scarpe (api specifiche di Ruby).Ci aiuta a capire che quando tk è un port di API basato su tcl (e altri sono basati su C e C++), allora queste API vengono realizzate specificamente per i rispettivi tre linguaggi di scripting.

Di questi, kivy è il più robusto, mentre la codifica di pygui è menzionata come molto simile a Python, pyui è meno robusto ma vale la pena provarlo e tutti questi dovrebbero essere portatili ovunque vada Python o l'applicazione basata su Python.

Poi c'è jpype che è un toolkit utilizzabile con jython e pydev, e che in realtà è japi di Java personalizzato sotto l'interfaccia python/jython.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top