Sviluppo di GUI in Python: Tkinter vs PyQt [chiuso]


94

Se si desidera sviluppare un'interfaccia utente in Python, quale scegliere: TkInter o PyQt?

Ho appena iniziato con TkInter e sono stato in grado di ottenere alcune semplici interfacce utente con widget elementari come etichetta, pulsante, casella di testo ecc. Sei curioso di sapere quanto sarebbe buono PyQt rispetto a TkInter?

Saluti


3
Inoltre, nota che ci sono alcune opzioni disponibili oltre a TkInter e PyQt. wxPython è quello che viene subito in mente, ma c'è un elenco più completo su wiki.python.org/moin/GuiProgramming e un elenco più breve dei pacchetti GUI più comuni elencati su python.org/doc/faq/gui .
esm

Risposte:


77

PyQt se stai sviluppando qualcosa di serio, soprattutto perché le cose che impari si tradurranno direttamente per lavorare con Qt anche in altre lingue se ne avrai bisogno, e Qt è probabilmente il miglior toolkit di interfaccia multipiattaforma disponibile in questo momento.

Ci sono solo due reali (potenziali) svantaggi:

PyQt è disponibile solo con GPL. Ciò significa che se rilasci il codice, deve essere disponibile con una licenza compatibile, secondo i termini dell'eccezione GPL di Nokia o con una licenza commerciale (che costa denaro). Questo è in contrasto con Qt, che ora è disponibile con LGPL.

PyQt non è incluso per impostazione predefinita nelle installazioni di Python. Dovrai impacchettare la libreria da solo. (Ars Technica ha un buon articolo su come farlo per Windows e OS X.)


5
Per l'open source, PyQt concede un'eccezione alla GPL che specifica l'elenco delle licenze che puoi utilizzare. Il testo completo dell'eccezione può essere trovato qui e una copia è inclusa nel pacchetto sorgente di PyQt. riverbankcomputing.co.uk/software/pyqt/license doc.trolltech.com/4.4/license-gpl-exceptions.html
sunqiang

Bene, grazie. Ho aggiunto una nota.
Sam DeFabbia-Kane

16
Nokia ha iniziato a creare una libreria chiamata PySide che fornisce funzionalità quasi identiche a PyQt, ma sotto LGPL. Al momento è disponibile solo su sistemi basati su * NIX. Ma puoi praticamente scambiare "PyQt4" con "PySide" nelle tue importazioni e fare in modo che (quasi) tutto funzioni. pyside.org
James,

Il collegamento per l'eccezione GPL di Nokia è morto.
Stevoisiak

1
A partire dal 2019, PyQt5 è disponibile e PySide2 supporta la maggior parte degli stessi binding Qt sotto LGPL.
LightCC

40

PyQt è il nostro toolkit GUI principale ora e dopo 1 anno di sviluppo non voglio tornare a nient'altro. È stabile, maturo, multipiattaforma e completamente nativo. Anche le finestre di dialogo di sistema (ad esempio per aprire i file) sono quelle utilizzate dal tuo sistema operativo.

Ho modificato di conseguenza il mio tema XP e ora la skin delle mie app. Questo crea un aspetto molto professionale, non paragonabile a un toolkit come Swing. L'API è ampia e va oltre le semplici cose GUI come i widget. Ha il supporto per la connettività del database, la stampa, il threading (l'ho usato e funziona a meraviglia), ... Lo uso anche per generare PDF (non sono necessarie altre librerie esterne). Consiglierei il libro di Mark Summerfield " Programmazione GUI rapida con Python e Qt " per ottenere velocità. Tieni presente che Qt viene fornito con un generatore di GUI (Qt designer) che è il migliore che ho usato (e ne ho provati molti).
Uso anche questo builder per creare mockup da mostrare agli utenti (è così facile!).

L'ho presentato ad altri 2 sviluppatori qui e non li ho sentiti lamentarsi ...


10
Un avvertimento: Qt sembra solo nativo. Gli elementi dell'interfaccia utente vengono effettivamente emulati (almeno su Mac OS X). La "sensazione" degli elementi grafici sembra a volte strana, a causa di questa emulazione.
Eric O Lebigot

22

Sto usando tkinterper piccole applicazioni con un'interfaccia semplice. Mi piace molto, anche se la mancanza di un buon editor WYSIWYG potrebbe essere un problema per un'app più grande.

Per le grandi app, PyQtpotrebbe essere una scelta migliore. Ha un ottimo screen designer, ma la licenza potrebbe essere un problema.

Infine, wxPythonpuò essere una buona alternativa, perché non presenta questi inconvenienti.


7
Ho scritto grandi applicazioni commerciali con tk senza problemi. Si ridimensiona abbastanza bene. Non è particolarmente utile se i tuoi set di dati si imbattono in milioni di elementi, ma poche persone sviluppano app del genere.
Bryan Oakley,

2
Grazie Bryan per il feedback. Questa risposta è stata data molto tempo fa e ora ho una migliore esperienza con Tk e mi piace sempre di più.
luc

ho aggiornato il mio annswer. Più un pb di strumenti di sviluppo che un problema di scalabilità
luc

8

PyQt è davvero facile da imparare e la documentazione per Qt funziona anche per PyQt, inoltre ci sono porte per .NET e Java. Quindi, è fiabesco cross platform e cross language. Inoltre hai PyQt integrato in Eric IDE .

Anche il supporto per gli stili CSS è davvero brillante.

Vedi il nuovo programma di installazione di OpenSuSE per vedere cosa puoi fare con esso.



1

Uso PyQt. È multipiattaforma, facile da lavorare e affidabile.

Ho usato TkInter leggermente e non vedo alcun punto che renda TkInter migliore di PyQt.

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.