Développement d'interfaces graphiques en Python: Tkinter vs PyQt [fermé]


94

Si l'on veut développer une interface utilisateur en Python, laquelle choisir: TkInter ou PyQt?

Je viens de commencer avec TkInter et j'ai pu obtenir des interfaces utilisateur simples avec des widgets élémentaires comme l'étiquette, le bouton, la zone de texte, etc. Juste curieux de savoir à quel point PyQt serait bon par rapport à TkInter?

à votre santé


3
Notez également que de nombreuses options s'offrent à vous en plus de TkInter et PyQt. wxPython est celui qui vient immédiatement à l'esprit, mais il existe une liste plus complète sur wiki.python.org/moin/GuiProgramming et une liste plus courte des packages d'interface graphique les plus courants répertoriés sur python.org/doc/faq/gui .
esm

Réponses:


77

PyQt si vous développez quelque chose de sérieux, d'autant plus que les choses que vous apprenez se traduiront directement par le travail avec Qt dans d'autres langues si vous en avez besoin, et Qt est probablement la meilleure boîte à outils d'interface multiplateforme disponible actuellement.

Il n'y a que deux inconvénients réels (potentiels):

PyQt n'est disponible que sous GPL. Cela signifie que si vous publiez votre code, il doit être disponible sous une licence compatible, sous les termes de l'exception GPL de Nokia , ou sous une licence commerciale (ce qui coûte de l'argent). Cela contraste avec Qt, qui est maintenant disponible sous la LGPL.

PyQt n'est pas inclus par défaut avec les installations Python. Vous allez devoir emballer la bibliothèque vous-même. (Ars Technica a un bon article sur le faire pour Windows et OS X.)


5
Pour l'open source, PyQt accorde une exception à la GPL qui spécifie la liste des licences que vous pouvez utiliser. Le texte complet de l'exception peut être trouvé ici et une copie est incluse dans le paquet source PyQt. riverbankcomputing.co.uk/software/pyqt/license doc.trolltech.com/4.4/license-gpl-exceptions.html
sunqiang

Bien, merci. J'ai ajouté une note.
Sam DeFabbia-Kane

16
Nokia a commencé à construire une bibliothèque appelée PySide qui fournit des fonctionnalités presque identiques à PyQt, mais sous la LGPL. Il n'est actuellement disponible que sur les systèmes * NIX. Mais vous pouvez à peu près remplacer "PyQt4" par "PySide" dans vos importations et faire fonctionner (presque) tout. pyside.org
James

Le lien pour l'exception GPL de Nokia est mort.
Stevoisiak

1
À partir de 2019, PyQt5 est sorti et PySide2 prend en charge la majorité des mêmes liaisons Qt sous LGPL.
LightCC

40

PyQt est notre principale boîte à outils GUI maintenant et après 1 an de développement, je ne veux pas revenir à autre chose. C'est stable, mature, multiplateforme et complètement natif. Même les boîtes de dialogue système (par exemple pour ouvrir des fichiers) sont celles utilisées par votre système d'exploitation.

J'ai modifié mon thème XP et maintenant la peau de mes applications en conséquence. Cela crée un look très professionnel, pas comparable à une boîte à outils comme Swing. L'API est étendue et va au-delà des simples éléments de l'interface graphique comme les widgets. Il prend en charge la connectivité de la base de données, l'impression, le threading (je l'ai utilisé et cela fonctionne comme un charme), ... Je l'utilise même pour générer des PDF (aucune autre bibliothèque externe n'est nécessaire). Je recommanderais le livre de Mark Summerfield par le biais de « Programmation rapide de l'interface graphique avec Python et Qt » pour vous aider à accélérer. Gardez à l'esprit que Qt est livré avec un constructeur d'interface graphique (Qt designer) qui est le meilleur que j'ai utilisé (et j'en ai essayé beaucoup).
J'utilise même ce constructeur pour créer des maquettes à montrer aux utilisateurs (c'est aussi simple que ça!).

Je l'ai présenté à 2 autres développeurs ici et je ne les ai pas entendus se plaindre ...


10
Une mise en garde: Qt ne semble que natif. Les éléments de l'interface utilisateur sont en fait émulés (au moins sur Mac OS X). La «sensation» des éléments graphiques serait parfois étrange à cause de cette émulation.
Eric O Lebigot

22

J'utilise tkinterpour de petites applications avec une interface simple. Je l'aime beaucoup, même si le manque de bon éditeur WYSIWYG pourrait être un problème pour une application plus grande.

Pour les grandes applications, cela PyQtpourrait être un meilleur choix. Il a un très bon concepteur d'écran, mais la licence peut être un problème.

Enfin, wxPythonpeut être une bonne alternative, car elle ne présente pas ces inconvénients.


7
J'ai écrit de grandes applications commerciales avec tk sans problème. Il évolue assez bien. Ce n'est pas particulièrement bon si vos ensembles de données contiennent des millions d'éléments, mais peu de gens développent des applications comme celle-là.
Bryan Oakley

2
Merci Bryan pour vos commentaires. Cette réponse a été faite il y a longtemps et j'ai maintenant une meilleure expérience avec Tk et je l'aime de plus en plus.
luc

J'ai mis à jour mon annswer. Plus un pb d'outils de développement qu'un problème d'évolutivité
luc

8

PyQt est vraiment facile à apprendre et la documentation pour Qt fonctionne également pour PyQt et il existe des ports vers .NET et Java. Donc, c'est féerique multiplateforme et cross language. Vous avez également PyQt intégré dans Eric IDE .

Le support des styles CSS est également vraiment génial.

Consultez le nouveau programme d'installation d'OpenSuSE pour voir ce que vous pouvez en faire.


4

Vous pouvez créer d'énormes interfaces graphiques en utilisant Tkinter. Si vous aimez essayer le module pytkgen, il aide à créer des interfaces graphiques Tkinter à partir de définitions JSON: https://github.com/tmetsch/pytkgen


1

J'utilise PyQt. Il est multiplateforme, facile à utiliser et fiable.

J'ai utilisé TkInter légèrement, et je ne vois aucun point rendant TkInter meilleur que PyQt.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.