2009-07-07 9 views
49

Si 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 simples avec des widgets élémentaires comme label, bouton, zone de texte, etc. Juste curieux de savoir à quel point PyQt serait comparé à TkInter?Développement de GUI en Python: Tkinter vs PyQt

acclamations

+3

Notez également que vous avez accès à un certain nombre d'options en plus de TkInter et PyQt. wxPython est celui qui me vient immédiatement à l'esprit, mais il y a une liste plus complète sur http://wiki.python.org/moin/GuiProgramming et une liste plus courte des paquets GUI les plus courants listés sur http: //www.python .org/doc/faq/gui /. – esm

Répondre

43

PyQt si vous développez quelque chose de sérieux, d'autant plus que les choses que vous apprenez traduira directement à travailler avec Qt dans d'autres langues si vous avez besoin, et Qt est probablement la meilleure interface multi-plateforme boîte à outils disponible dès maintenant. Il n'y a que deux inconvénients réels (potentiels): PyQt est uniquement disponible sous licence GPL (ce qui signifie que votre code doit également être disponible sous licence compatible ou sous les termes Nokia's GPL Exception si vous le débloquez) ou sous une licence commerciale (qui coûte de l'argent). Ceci est en contraste avec Qt, qui est maintenant disponible sous la LGPL. PyQt n'est également pas inclus par défaut avec les installations Python - vous devrez empaqueter la bibliothèque vous-même. (Ars Technica a good article à le faire pour Windows et OS X.)

+3

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. http://www.riverbankcomputing.co.uk/software/pyqt/license http://doc.trolltech.com/4.4/license-gpl-exceptions.html – sunqiang

+0

droit, merci. J'ai ajouté une note. –

+13

Nokia a commencé à construire une bibliothèque appelée PySide qui fournit des fonctionnalités presque identiques à PyQt, mais sous la LGPL. Il est uniquement disponible sur les systèmes * NIX en ce moment. Mais vous pouvez presque simplement échanger "PyQt4" avec "PySide" dans vos importations et avoir (presque) tout fonctionne. http://www.pyside.org – James

12

J'utilise tkinter pour petites applications avec 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, PyQt pourrait être un meilleur choix. Il a un très bon concepteur d'écran, mais la licence peut être un problème.

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

+4

J'ai écrit de grandes applications commerciales avec tk sans problème. Il balance assez bien. Ce n'est pas particulièrement bien si vos jeux de données se heurtent à des millions d'éléments, mais peu de gens développent des applications de ce type. –

+1

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

+0

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

24

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 peaufiné mon thème XP et maintenant mes applications skin en conséquence. Cela crée un look très professionnel, pas comparable à une boîte à outils comme Swing. L'API est vaste et va au-delà des choses purement graphiques comme les widgets. Il supporte la connectivité de base de données, l'impression, le threading (je l'ai utilisé et ça fonctionne comme un charme), ... je l'utilise même pour générer des PDF (aucune autre librairie externe n'est nécessaire). Je recommanderais le livre de Mark Summerfield si 'Rapid GUI Programming with Python and Qt' pour vous mettre en vitesse. Gardez à l'esprit que Qt vient avec un constructeur GUI (concepteur Qt) qui est le meilleur que j'ai utilisé (et j'ai essayé beaucoup d'entre eux).
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 n'ont pas entendu les plaindre ...

+5

Une mise en garde: Qt seulement * looks * native. Les éléments de l'interface utilisateur sont en fait émulés (au moins sur Mac OS X). La «sensation» des éléments graphiques est parfois étrange, à cause de cette émulation. – EOL

1

J'utilise PyQt - Cross-plate-forme, facile à travailler avec et fiable.

J'ai utilisé TkInter très léger et je ne trouve pas un point rendant tkInter meilleur que PyQt.

3

PyQt est vraiment facile à apprendre et docs pour Qt fonctionne également pour PyQt aussi il y a des ports vers .NET et Java. Donc, c'est une fée cross-plateforme et un langage croisé. Vous avez également PyQt intégré dans Eric IDE.

La prise en charge des styles CSS est également très brillante.

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

2

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