|
|||||||
| GUI Forum d'entraide sur les bibliothèques pour interfaces graphiques en Python |
|
|
Publicité ' | |||||||||||||||||||||||||||||||||||||
|
|
|
Outils de la discussion |
|
|
#1 | |
![]() ![]() ![]() |
Pour développer une application graphique avec Python, un certain choix est disponible : Tkinter, pyFltk, PyQt, PyQtk, PySide, wxPython... Certains vont même jusqu'à déconseiller l'utilisation de Python pour les interfaces graphiques, alors que d'autres sites disent le contraire, avec même de quoi sélectionner le framework graphique le plus adapté. Voici un retour d'expérience sur le choix d'un framework graphique pour une application Python. Fallait-il vraiment le faire en Python ?
Citation:
Ou bien êtes-vous à l'opposé : Python, c'est bien mais pas pour des GUI. Quels sont vos griefs ? Que manque-t-il à Python ? |
|
|
20
|
|
|
#2 |
![]() ![]() Matthieu BrucherDéveloppeur HPC Inscription : juillet 2005 Messages : 9 697 ![]() |
PyGTK s'est sans doute amélioré, il fut une époque où il ne valait mieux pas trop l'utiliser en multithread. Plutôt que PyGTK, je prendrai wxPython.
|
|
|
10
|
|
|
#3 |
|
Expert Confirmé Sénior
![]() Inscription : juin 2008 Messages : 3 719 ![]() |
Salut,
Je connais peu de GUI écrits en Python. Par contre, il existe des "bindings" qui permettent d'écrire des IHM avec Python qui utiliseront les GUI: Wx, GTK, Qt,... A la base ces bindings n'apportent aucune fonctionnalité supplémentaire: elles permettent d'utiliser les existantes... Préférer Qt à Wx ou le contraire, pourquoi pas, mais pourquoi mettre Python dans la balance pour un tel choix? Par contre, nous pourrions avoir une discussion plus pythonique sur un thème proche... est ce que
- W
__________________
Architectures Post-Modernes |
|
|
10
|
|
|
#4 |
|
Membre émérite
![]() Inscription : décembre 2007 Messages : 754 ![]() |
bonsoir,
je ne connais pas PyGTK, j'utilise PyQt/QtDesigner pour des interfaces simples. Je suis satisfait du résultat. comment s'est fait mon choix ? après avoir fait du Tkinter qui est limité, il était question de changer. Le facteur déclencheur est lié au fait que Tkinter n'est pas thread-safe. Le choix s'est porté entre wxPython et PyQt. C'est surtout QtDesigner qui a fait la différence. Je n'ai pas du tout accroché à boa. la rapidité d'apprentissage de la librairie, facilitée par QtDesigner et QtAssistant et le livre de Mark Summerfield (Rapid GUI Programming with Python and Qt) m'a convaincu de ce choix. j'avais aussi parcouru wxPython in action et fais quelques tests avec WxPython, ça m'a beaucoup plus. ensuite, je pense que le lien pointant les lacunes de Python en terme d'IHM est dépassé et un brin malhonnête. comment peut on tirer une telle conclusion avec seulement les tests qui ont été faits ? |
|
|
10
|
|
|
#5 |
|
Invité de passage
![]() Inscription : octobre 2009 Messages : 3 ![]() |
Je vous conseille PySide
http://www.pyside.org/ PySide est License LGPL et avec l'API compatible PyQt (License GPL) |
|
|
10
|
|
|
#6 |
|
Membre Expert
![]() ![]() |
Bonsoir,
moi pour le moment je fait mes GUI avec Tkinter. Depuis le début ça allait mais je pense que je vais bientôt me mettre à wxPython. J'ai vu des interfaces avec et j'apprécie beaucoup. ![]() @+ et bon code
|
|
10
|
|
|
#7 |
![]() ![]() Olivier GirardotDéveloppeur Java Inscription : mars 2010 Messages : 87 ![]() |
Bonsoir,
Après plusieurs expériences en Python, j'ai trouvé la plupart des framework assez compliqués, peu maintenable et surtout peu sympathique esthétiquement. Je suis revenu de cette opinion en découvrant le binding Python PyQt pour le framework Qt de nokia. J'ai réussi à faire d'agréables interface graphique avec la facilité et la rapidité qui caractérise python ! j'ai d'ailleurs publié récemment un article d'introduction à PyQt sur developpez.net : http://ogirardot.developpez.com/introduction-pyqt/ Un point qui m'a un peu refroidi, était le coté GPLv3 + license commerciale de PyQt, mais comme l'a signalé boulabiar le framework PySide est compatible en terme d'api avec PyQt et est totalement libre ! Donc tout mon code a à peine évolué dans le passage de l'un à l'autre. et en plus le livre Rapid Programming with PyQt est un très bon ouvrage. Donc pour le point final, je recommande tout autant PySide et je suis de près son développement. D'ailleurs tous mes futurs articles seront avec PySide dans le rôle principal, surtout pour son coté LGPL. Bonne soirée, Olivier. |
|
10
|
|
|
#8 | |||
|
Membre éclairé
![]() Inscription : janvier 2007 Messages : 329 ![]() |
Hello,
Personnellement je programme avec PyGTK, que je trouve à la fois simple et assez puissant. J'ai aussi utilisé Tkinter, qui est très pratique pour faire des boites de dialogues mais on est vite limité... Les IHM en python ne sont pas particulièrement lentes à condition de ne pas faire de bidouilles qui nécessitent un rafraichissement fréquent, comme par exemple implémenter les numéros de lignes dans une zone de texte (ça m'étonne d'ailleurs que ce ne soit pas disponible dans Scintilla). Mieux vaut utiliser les possibilités existantes d'un widget, ou même laisser tomber si la fonctionnalité n'est pas présente par défaut. En bref, PyGTK est très bien pour développer rapidement une interface à un soft, mais il vaut mieux ne pas en vouloir plus que ce que GTK peut offrir. Citation:
Citation:
Citation:
- |
|||
|
|
10
|
|
|
#9 |
|
Membre émérite
![]() Inscription : décembre 2003 Messages : 782 ![]() |
pour ma part je réalise tout en tkinter et surtout depuis les versions 2.7 et supérieur en ttk (je vous conseil vraiment de jeter un coup d'oeil)
pas de module supplémentaire à installé, que du bonheur souvent je me suis vu faire des IHM en html et javascript et mettre python côté serveur |
|
|
10
|
|
|
#10 |
|
Futur Membre du Club
![]() Inscription : mars 2005 Messages : 96 ![]() |
> wiztricks
Merci pour les liens, je ne connaissais ni Camelot ni Traits vu que je fais moi-meme pas mal de developpement PyQt avec Elixir (et une pincee de mechanize et lxml...) je vais surement jeter un oeil a Camelot sous peu. Par contre, malgre quelques petites recherches, j'avoue que j'ai du mal a voir la valeur ajoutee par Traits.
Validation, vu que le typage est verifie au runtime, qu'est ce que ca change ? Delegation, en tant qu'utilisateur PyQt je m'en sers deja pas mal Notification => signal/slot ? Je dis tout ca sans arriere pensee, je ne demande qu'a etre convaincu !!! |
|
|
10
|
|
|
#11 |
|
Invité de passage
![]() Inscription : août 2010 Messages : 1 ![]() |
Pour ma part on m'a imposé l'utilisation de wxPython
Je peux dire qu'on peut faire pas mal de chose et assez rapidement. J'utilise wxGlade ,pour générer les interfaces , et Eclipse pour le code Python . J'ai fait une application avec plusieurs connexions TCP/IP en parallèle , qui fait pas mal de calcul et rafraichit l'IHM en temps réel , ça marche mais ça consomme beaucoup trop de CPU et de mémoire . Donc si c'était à refaire j'opterais pour C++/QT. A mon avis les inconvénients majeurs de Python/WxPython: -Les mises à jour de wxPython ne sont pas très fréquentes (1 fois par an en moyenne ). -Impossibilité d'utiliser les multi-core du PC à cause du "Global Interpreter Lock" . -Manque de documentation . |
|
|
10
|
|
|
#12 |
|
Membre du Club
![]() Olivier Inscription : avril 2010 Messages : 30 ![]() |
Bonjour,
- Pour moi, après avoir testé un peu toutes les librairies graphiques pour Python, c'est avec wxPython et PythonCard que je tourne depuis 6 ans. ![]() Certes, PythonCard n'est pas aussi zolie et complet que QtDesigner (loin s'en faut - Aucun problème d'intégration insolvable dans un projet de déploiement avec py2exe - Reste que wxPython (et donc pythoncard) n'a pas encore été porté, à l'heure actuelle, vers Python 3 |
|
|
10
|
|
|
#13 | |
![]() ![]() Matthieu BrucherDéveloppeur HPC Inscription : juillet 2005 Messages : 9 697 ![]() |
Citation:
Après, les notifications, c'est une manière d'écrire les mises à jour lorsqu'on modifie une propriété. C'est plus pratique quand un attribut est un Trait que de créer une propriété, un signal, un slot, ... avec les inconvénients du langage sous-jacent (i.e. les ()). Quand on voit ce que donne VTK avec Traits, c'est le jour et la nuit en terme d'utilisabilité. |
|
|
|
10
|
|
|
#14 |
|
Futur Membre du Club
![]() Inscription : mars 2005 Messages : 96 ![]() |
A ma connaissance, le typage est fort en python
Donc pour cette validation, je suppose que c'est une facon elegante de faire un assert sur le type des variables en entree, j'ai bon ? Je faisais plus ou moins la meme chose avec des decorateurs jusqu'a present, mais c'etait assez moche effectivement. Je viens de trouver une introduction a Traits sur la PyCon2010, je vais y jeter un oeil ! Mais j'ai du mal a me figurer certaines choses. PyQt est un backend, concretement ca veut dire que TraitsUI fait sa sauce et que je n'ai pas trop mon mot a dire ? Ou alors je garde quand meme la meme flexibilite qu'avec du pur PyQt ? |
|
|
10
|
|
|
#15 |
![]() ![]() Matthieu BrucherDéveloppeur HPC Inscription : juillet 2005 Messages : 9 697 ![]() |
Oups, pardon, je voulais dire statique au lieu de dynamique...
Traits encapsule PyQT ou wxPython. Tu as une certaine liberté, mais tu ne peux pas faire ce que tu veux, tout comme avec PyQt, tu ne peux pas faire la même chose qu'en dessinant directement toi-même les fenêtres. |
|
|
10
|
|
|
#16 |
|
Membre Expert
![]() ![]() Inscription : octobre 2008 Messages : 942 ![]() |
Bonjour,
Puisqu'on parle de Traits, dans le même genre, je vous propose de découvrir la dernière création de Phil Thompson : http://www.riverbankcomputing.com/st...dip/index.html C'est tout frais, ça date de juillet. Python3 au départ mais porté sur python 2.x par la suite. |
|
|
10
|
|
|
#17 | |
|
Expert Confirmé Sénior
![]() Inscription : juin 2008 Messages : 3 719 ![]() |
Salut,
Citation:
Les versions Python 2.x sont à priori disponible depuis Juillet. - W (*) : ce sont les fonctionnalités de base qui font que... on a des soucis quand elles ne sont pas là. Python est typé, certes! Mais ce bout est généralement "frontière" avec des représentations externes et nécessite parfois des conversions de type. Exempte: Dans un document XML un integer est représenté sous la forme d'un "string". S'il est utile qu'à la "frontière" ce string puisse être traité comme un "int", il va bien falloir définir le type - par défaut -.
__________________
Architectures Post-Modernes |
|
|
|
10
|
|
|
#18 |
|
Expert Confirmé
![]() ![]() Inscription : décembre 2007 Messages : 1 777 ![]() |
Bonjour,
J'ai commencé avec tkinter. Comme il m'a semblé un peu juste pour ce que je voulais faire, j'ai regardé du côté des compléments: tix et pmw. J'ai découvert que tix était fourni avec l'installation de Python, mais impossible de savoir ce qu'il y a dedans ni comment s'en servir. Il y a même une demo en tcl, mais je n'ai pas trouvé comment la lancer. Bref, une vrai punition... J'ai regardé alors du côté des autres bibliothèques. Je veux un ensemble qui me permette de réaliser des programmes graphiques autonomes, en multiplateforme à partir de Windows, et de construire des fenêtres avec un RAD. Un peu comme avec Delphi. J'ai commencé par wxPython. Mais d'une part j'ai eu du mal avec boa constructor (des bugs ou des maladresses de ma part?) et d'autre part, je ne sais toujours pas si il y aura un jour une version "Python 3.x". Désolé, mais le temps d'investissement personnel est important pour apprendre une bibliothèque graphique, et je veux m'assurer qu'il y aura continuité dans le futur. J'ai regardé ensuite PyGtk+. Comme je connais bien gnome, j'avais un avis plutôt favorable, mais j'ai été rebuté par Glade. Et puis, non d'un chien, qu'est-ce que c'est compliqué à installer: cairo? ATK?, pango? Glib? je n'ai pas besoin de connaître tout cela dans un 1er temps. Je me suis finalement arrêté sur PyQt4 (PySide n'existe pas sous Windows): installation super simple sous Windows, même s'il faut aussi Qt4 pour avoir la doc. Existe sous les différentes versions de Python, y compris 2.7 et 3.x. Bibliothèque très complète, y compris, par exemple, des widgets directement connectés à une base de données SQL. Qt Designer marche très bien, même s'il n'est pas parfait. cx_freeze me permet de rendre le programme autonome, et innosetup de l'installer comme n'importe quel programme windows. Etc... En contrepartie, la doc est en C++ et en anglais, et il y a très peu de tuto, même en anglais. Le moindre problème nécessite de chercher avec google sur 20 ou 30 sites, et une fois sur 2, il faut se débrouiller tout seul avec le C++. Tous les exemples en C++ n'ont pas été traduits en Python. Bref, c'est douloureux. Mais une fois qu'on a trouvé, ça marche très bien et c'est très esthétique! Sinon, je développe avec Eclipse + PyDev. J'en ai essayé beaucoup d'autres, mais je reviens toujours à Eclipse. J'ai essayé eric4 (Qt4), mais j'ai rencontré beaucoup de pb avec: désolé, mais j'ai déjà du mal à débugger mes programmes, je ne veux pas en plus avoir à débugger l'outil de développement... J'avoue qu'en tant que fan de Python, je suis un peu surpris du manque d'intérêt de ses concepteurs pour la partie graphique, limitée au basique tkinter. Sans la partie graphique, Python n'est qu'un super langage de script. Tyrtamos
__________________
Ne rien ranger permet d'observer la loi universelle d'entropie: l'inévitable convergence vers le chaos... Mes recettes python: http://www.jpvweb.com |
|
|
10
|
|
|
#19 |
|
Futur Membre du Club
![]() Inscription : mars 2005 Messages : 96 ![]() |
J'avais egalement regarde dip il y a 2 mois, mais comme a l'epoque seul Python 3 etait supporte, j'avais passe mon chemin.
Decidement, Phil Thompson est vraiment actif, j'espere que l'arrivee PySide ne va pas couler sa boite, vu que PyQt c'est vraiment du bonheur pour developper... Du coup, dip et Traits, similaires dans le principe ? je vais surement essayer dip, ou du moins lire serieusement la doc ^^ |
|
|
10
|
|
|
#20 | |
|
Expert Confirmé Sénior
![]() Inscription : juin 2008 Messages : 3 719 ![]() |
Heu...
Citation:
Seul ce composant de dpi est comparable et/ou similaire à Traits. Pour le reste, dip se comparerait plutôt à ETS (Enthought Tools Suite): tout deux sont des frameworks qui organisent quelque peu le code, proposent des solutions 'prêtes à l'emploi' pour résoudre facilement nombre de problèmes récurrents,... - W
__________________
Architectures Post-Modernes |
|
|
|
10
|
Copyright © 2000-2013 - www.developpez.com