Esiste un framework standard per lo sviluppo di app Python GUI.?


20

Ci sono così tanti framework per scrivere applicazioni GUI usando Python. Ma esiste un quadro standard chiave? Ad esempio, abbiamo un pacchetto di .NET / C # su Visual Studio.

Sto pensando anche in altre prospettive. In futuro, se do un'intervista per un lavoro di programmatore Python, quale framework GUI verrà preso in considerazione?

Mi chiedo anche, non esiste un IDE che integri la GUI e il linguaggio Python. La scelta del sapore è buona ma l'eccesso di scelta diventa una distrazione.


No. Non esiste uno "standard". .NET non è standardizzato. Non esiste un organismo di standard che abbia scritto uno standard per .NET. Esiste uno standard per C #: ecma-international.org/publications/standards/Ecma-334.htm . Forse "standard" non è quello che vuoi dire?
S. Lott

@ S.Lott: scusate per quel termine confuso. Intendevo qualcosa di diverso. Per le applicazioni .NET, Visual Studio è il miglior strumento all-i-one che include GUI Builder e altre cose. Raramente le persone cercano alternative a VS.NET. Intendevo in un termine simile. Qualsiasi IDE Python in cui termina la ricerca di una soluzione completa all-in-one.
RPK

Stai chiedendo dell'IDE (come Visual Studio)? Se è così, allora "framework" è la parola sbagliata nella domanda. Per favore chiarisci cosa stai chiedendo.
S.Lott

@ S.Lott: No, non sto chiedendo di Visual Studio. Vorrei chiarire. Ad esempio, ASP.NET. È un framework ma si integra molto bene nell'IDE di Visual Studio. Hai tutti gli strumenti disponibili sul tavolo centrale. C'è qualcosa per Python?
RPK

Visual Studio è un IDE == tutti gli strumenti per lo sviluppo in un unico posto. "Non sto chiedendo di Visual Studio" è l'esatto contrario di "Hai tutti gli strumenti disponibili sul tavolo centrale. C'è qualcosa per Python?". O stai chiedendo dell'IDE (la versione Python di Visual Studio) o stai chiedendo del framework stesso. O forse stai chiedendo di entrambi. È molto difficile capire di cosa si tratti. Si prega di aggiornare la domanda per indicare chiaramente ciò che si desidera.
S.Lott

Risposte:


12

Puoi scrivere le app della GUI dell'API Win32 in Python, se ti piace scrivere tutto quel codice boilerplate: progetto PyWin32

Personalmente, mi piace wxPython . È multipiattaforma (completamente supportato su Linux e Windows) ed è in circolazione da un po 'di tempo ... base di supporto decente e molta documentazione / codice di esempio. Se vuoi usarlo, dai un'occhiata a BoaConstructor . Questo è l'IDE per wxPython (o forse meglio, un IDE scritto in e per wxPython). È l'unico RAD IDE specifico per Python che ho incontrato che vale la pena menzionare, salvo l'editor dell'interfaccia utente di Qt (l'editor dell'interfaccia utente di Qt è utilizzabile sia per C ++ che per PyQT).

Come ha detto Peter nella sua risposta, Tk è la GUI defacto per le vecchie app Python, ma in realtà non sembrano così belle per l'utente finale. Ci sono alcune estensioni che lo rendono un po 'migliore e forniscono una certa capacità di modellare l'interfaccia utente, ma a meno che tu non stia mantenendo un'app GUI più vecchia non suggerirei di disturbarla.

pyGTK, anche già menzionato, sarebbe un'altra buona scelta. Anche questo è multipiattaforma, anche se non ho avuto alcuna esperienza personale con lo sviluppo di GTK su Windows. PyQT sarebbe una scelta migliore, IMO: penso che la GUI creata con la libreria Qt sia allo stesso tempo aspetto e funzione superiore a quelle realizzate con GTK. Trovo anche il meccanismo di eventi di segnale / slot di Qt più semplice da utilizzare. YMMV.

Non esiste davvero uno standard là fuori per lo sviluppo della GUI di Python, almeno non quello che ho visto, ma dei miei colleghi sviluppatori Python con cui ho lavorato negli anni, mi hanno suggerito wxPython e PyQT più di tutti gli altri toolkit. Non sono sicuro che ci sia un numero considerevole di posizioni di sviluppo della GUI di Python là fuori, per essere onesti. La maggior parte dello sviluppo di Python che ho fatto nel corso degli anni è stata lato server, ma ciò non vuol dire che non ci sono diverse aziende che stanno cercando di seguire la strada open source per le loro app GUI.


Le app di Tkinter possono essere fatte apparire abbastanza accettabili, spesso quasi indistinguibili dalle app native, se si prende semplicemente il tempo per farlo. Concordo, tuttavia, che wxPython sembra migliore senza modifiche. Personalmente preferisco ancora Tkinter perché sembra abbastanza buono per la maggior parte delle persone e la mia produttività è superiore rispetto a wxPython.
Bryan Oakley,

Tk (Tkinter) non supporta Unicode completo (es: script shaping) se si prevede di sviluppare un'applicazione l10n / i18n.
user.dz,

12

Tk era lo standard, ma è probabilmente semplicistico e brutto. Quindi Qt è diventato piuttosto popolare. Gtk è anche possibile, e questo copre i preferiti su piattaforme Linux.

Ma hai ragione, non c'è davvero nessuna risposta semplice. L'eccessiva scelta è piuttosto comune nel mondo dell'open source, dopo tutto.


4
Vorrei scegliere Qt solo perché sembra più bello di Gtk
TheLQ

1
+1 per una risposta completa. Qt è bello e potente e sono disponibili due attacchi (per quanto riguarda la licenza).
ChristopheD,

Probabilmente non è più brutto GUARDARE su Windows. Tuttavia, non mi piace come appare il codice da scrivere. Codice brutto. Aspetto, puramente nativo e abbastanza ragionevole, finalmente.
Warren P,

5

Non esiste uno "standard" e sono d'accordo - la pletora di scelte è un dolore. Per quanto riguarda un IDE di "strumenti a due vie" integrato per le GUI di Python, mi chiedo anche perché non ci sia nessuno là fuori, forse perché ci sono così tanti toolkit di GUI che nessuno vuole investire in un IDE per uno solo di loro.

Detto questo, PyQt 4.7 con P3k ti fornirà meravigliose GUI (oltre a molte altre potenti funzionalità). Vedi http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/introduction.html - "Questa è la guida di riferimento per PyQt 4.8.4. PyQt v4 è un insieme di collegamenti Python per v4 del Qt framework applicativo di Nokia. "

PyQt è ampiamente utilizzato e ci sono alcuni buoni libri su di esso: vedi http://www.qtrac.eu/pyqtbook.html "Programmazione GUI rapida con Python e Qt" tra gli altri (il libro è un po 'datato - deve essere aggiornato per P3k).

Ci sono 2 gravi problemi con PyQt:

1) Ha alcune caratteristiche distintamente 'non ritoniche', essendo solo un sottile wrapper nelle librerie Q ++ C ++. Ma ho raccomandato P3k-PyQt 4.7 perché alcuni sono stati risolti nei pacchetti "più recenti e migliori". Dai un'occhiata a questo post:

Problemi di progettazione PyQt

2) Per uso commerciale ci sono costi di licenza piuttosto elevati, sia per PyQt che per Qt.

Un'alternativa emergente a PyQt è PySide di Nokia, un altro wrapper Python per Qt che è interamente open source (che tuttavia non include le licenze Qt).

Conoscere molto su Qt non è una cosa negativa dal punto di vista del mercato, e lo otterrai da PyQt, quindi lo prenderei (o PySide) seriamente in considerazione se stai cercando di decidere su una piattaforma GUI di diventare esperto in .

Indipendentemente da ciò che scegli, suggerirei di evitare il tkinter per la maggior parte, anche se è "fuori dagli schemi" con Python, perché è estremamente limitato e IMO ha un aspetto e una sensazione grezzi e obsoleti.

HTH


3

pyGTK è prolifico. È abbastanza facile da usare e rende le GUI che non sembrano semi male.


Quanto è ricca la comunità? Quanto velocemente arrivano le risposte nel suo forum?
RPK

1
@RPK, non ne ho idea, non ho mai dovuto chiedere aiuto, tutto è abbastanza facile da usare.
dan_waterworth,

Non sono sicuro che "prolifico" sia la parola giusta. "produrre prole, giovani, frutti, ecc. in abbondanza; molto fruttuoso: un pero prolifico" Forse "popolare" o "eccezionale".
S.Lott

@ S.Lott, prolifico: "Allo stesso modo produrre risultati o lavorare in abbondanza". (seconda definizione del wiktionary). "Serve a produrre; fruttuoso di risultati; attivo; come, un cervello prolifico; una controversia prolifica del male." (Webster's Revised Unabridged Dictionary (1913 + 1828))
dan_waterworth

prolifico come in "pyGTK produce molte applicazioni?" Sembra sforzato. Le persone producono applicazioni. pyGTK è una fondazione popolare, forse, ma non sembra il produttore.
S.Lott

0

Gtk3 è un framework GUI molto maturo. Ha attacchi Python nativi (GObject Introspection) e molta documentazione . Se stai eseguendo un bel po 'di interfaccia grafica, considera l'utilizzo di Anjuta . Anjuta ha un'interfaccia drag and drop per configurare facilmente i tuoi widget.

WxWidgets è abbastanza buono, tuttavia non esiste un modo semplice per generare dinamicamente callback Python come Anjuta per Gtk.

PyGtk è ora deprecato a favore dei collegamenti Gtk3 a Python (GObject Introspection)

PyQt è anche un giocatore nella GUI di Python, ma non ha una grande comunità.

BoaConstructor è più a lungo mantenuto e sarebbe sciocco da usare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.