Existe-t-il un cadre standard pour le développement d'applications GUI Python.?

20

Il y a tellement de frameworks pour écrire une application GUI en utilisant Python. Mais existe-t-il un cadre standard unique? Par exemple, nous avons un ensemble de .NET / C # sur Visual Studio.

Je pense également à d'autres perspectives. À l'avenir, si je donne une interview pour un travail de programmeur Python, quel cadre GUI sera envisagé?

Je me demande également, il n'y a pas d'IDE qui intègre le langage GUI et Python. Le choix de la saveur est bon mais le sur-choix devient une distraction.

RPK
la source
Non. Il n'y a pas de "standard". .NET n'est pas normalisé. Aucun organisme de normalisation n'a rédigé de norme pour .NET Il existe une norme pour C #: ecma-international.org/publications/standards/Ecma-334.htm . Peut-être que "standard" n'est pas ce que vous voulez dire?
S.Lott
@ S.Lott: Désolé pour ce terme déroutant. Je voulais dire quelque chose de différent. Pour les applications .NET, Visual Studio est le meilleur outil tout-en-un qui inclut le générateur d'interface graphique et d'autres choses. Rarement, les gens recherchent des alternatives à VS.NET. Je voulais dire dans un terme similaire. Tout IDE Python où se termine la recherche d'une solution complète tout-en-un.
RPK
Vous posez des questions sur l'IDE (comme Visual Studio)? Si c'est le cas, «cadre» n'est pas le bon mot dans la question. Veuillez clarifier ce que vous demandez.
S.Lott
@ S.Lott: Non, je ne pose pas de questions sur Visual Studio. Permettez-moi de clarifier. Prenons par exemple ASP.NET. C'est un framework mais il s'intègre très bien dans Visual Studio IDE. Vous avez tous les outils disponibles sur la table centrale. Y a-t-il quelque chose pour Python?
RPK
Visual studio est un IDE == tous les outils de développement en un seul endroit. "Je ne pose pas de questions sur Visual Studio" est exactement le contraire de "Vous avez tous les outils disponibles sur la table centrale. Y a-t-il quelque chose pour Python?". Soit vous posez des questions sur l'IDE (la version Python de Visual Studio), soit vous posez des questions sur le cadre lui-même. Ou, peut-être que vous posez des questions sur les deux. Il est très difficile de comprendre sur quoi porte la question. Veuillez mettre à jour la question pour indiquer très clairement ce que vous voulez.
S.Lott

Réponses:

12

Vous pouvez écrire des applications GUI API Win32 en Python, si vous aimez écrire tout ce code passe- partout : projet PyWin32

Personnellement, j'aime wxPython . Il est multiplateforme (entièrement pris en charge sur Linux et Windows) et existe depuis un certain temps ... une base de support décente et beaucoup de documentation / exemple de code. Si vous souhaitez l'utiliser, jetez un œil à BoaConstructor . C'est l'IDE pour wxPython (ou peut-être mieux dit, un IDE écrit dans et pour wxPython). C'est le seul IDE RAD spécifiquement pour Python que j'ai rencontré qui mérite même d'être mentionné, sauf l'éditeur Qt UI (l'éditeur UI de Qt est utilisable à la fois pour C ++ et PyQT).

Comme Peter l'a mentionné dans sa réponse, Tk est l'interface graphique de facto pour les anciennes applications Python, mais elles ne sont vraiment pas très jolies pour l'utilisateur final. Il y a quelques extensions pour le rendre un peu meilleur et fournir une certaine capacité de style de l'interface utilisateur, mais à moins que vous ne mainteniez une ancienne application graphique, je ne suggérerais pas de la déranger.

pyGTK, également déjà mentionné, serait un autre bon choix. Il est également multiplateforme, même si je n'ai aucune expérience personnelle du développement GTK sous Windows. PyQT serait un meilleur choix, OMI - je pense que les interfaces graphiques créées avec la bibliothèque Qt sont à la fois esthétiques et fonctionnelles que celles faites avec GTK. Je trouve également que le mécanisme d'événement signal / slot de Qt est plus facile à utiliser. YMMV.

Il n'y a vraiment pas de standard pour le développement de l'interface graphique Python, du moins pas que j'ai vu, mais de mes collègues développeurs Python avec qui j'ai travaillé au fil des ans, ils m'ont suggéré wxPython et PyQT plus que n'importe lequel des autres boîtes à outils. Pour être honnête, je ne sais pas s'il existe un nombre substantiel de postes de développement d'interface graphique Python. La majeure partie du développement Python que j'ai fait au fil des ans a été côté serveur, mais cela ne veut pas dire qu'il n'y a pas diverses entreprises qui cherchent maintenant à emprunter la voie open source pour leurs applications GUI.

Volonté
la source
Les applications Tkinter peuvent sembler tout à fait acceptables, souvent presque indiscernables des applications natives, si vous prenez simplement le temps de le faire. Je conviendrai, cependant, que wxPython a l'air mieux sans ajustement. Personnellement, je préfère toujours Tkinter car il semble assez bon pour la plupart des gens et ma productivité est plus élevée qu'avec wxPython.
Bryan Oakley
Tk (Tkinter) ne prend pas en charge Unicode complet (ex: mise en forme de script) si vous prévoyez de développer une application l10n / i18n.
user.dz
12

Tk était la norme, mais c'est sans doute simpliste et laid. Puis Qt est devenu assez populaire. Gtk est également possible, et cela couvre les favoris sur les plates-formes Linux.

Mais vous avez raison, il n'y a vraiment pas de réponse évidente. Le sur-choix est assez courant dans le monde open source, après tout.

Peter Eisentraut
la source
4
Je choisirais Qt simplement parce qu'il est plus joli que Gtk
TheLQ
1
+1 pour une réponse complète. Qt est agréable et puissant, et deux liaisons (par licence) sont disponibles.
ChristopheD
Il n'est sans doute plus laid de regarder sur Windows. Pourtant, je n'aime pas le code à écrire. Code moche. Apparence, purement native, et tout à fait raisonnable, enfin.
Warren P
5

Il n'y a pas de «standard» et je suis d'accord - la pléthore de choix est pénible. En ce qui concerne un IDE `` d'outils bidirectionnels '' intégré pour les interfaces graphiques Python, je me demande également pourquoi il ne semble pas y en avoir - peut-être parce qu'il y a tellement de boîtes à outils GUI que personne ne veut investir dans un IDE pour l'un des leur.

Cela dit, PyQt 4.7 avec P3k vous offrira de merveilleuses interfaces graphiques (ainsi que de nombreuses autres fonctionnalités puissantes). Voir http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/introduction.html - "Ceci est le guide de référence pour PyQt 4.8.4. PyQt v4 est un ensemble de liaisons Python pour la v4 du Qt cadre d'application de Nokia. "

PyQt est largement utilisé et il existe de bons livres à ce sujet: voir http://www.qtrac.eu/pyqtbook.html "Rapid GUI Programming with Python and Qt" entre autres (le livre est un peu dépassé - doit être mis à jour) pour P3k).

Il y a 2 problèmes sérieux avec PyQt:

1) Il a des caractéristiques nettement «non pythoniques», n'étant qu'un mince wrapper sur les bibliothèques C ++ Qt. Mais j'ai recommandé P3k-PyQt 4.7 parce que certains ont été corrigés dans les packages `` les plus récents et les meilleurs ''. Découvrez ce post:

Problèmes de conception PyQt

2) Pour une utilisation commerciale, les frais de licence sont assez élevés, à la fois pour PyQt et Qt.

Une alternative prometteuse à PyQt est PySide de Nokia, un autre wrapper Python pour Qt qui est entièrement open source (qui n'inclut pas la licence Qt cependant).

En savoir beaucoup sur Qt n'est pas une mauvaise chose sur le marché, et vous obtiendrez cela de PyQt, donc je lui donnerais (ou PySide) une considération sérieuse si vous essayez de décider d'une plate-forme graphique pour devenir expert en .

Indépendamment de ce que vous choisissez, je suggérerais d'éviter tkinter pour la plupart, même s'il est `` prêt à l'emploi '' avec Python, car il est extrêmement limité, et à l'OMI, il a une apparence et une sensation grossières et obsolètes.

HTH

Vecteur
la source
3

pyGTK est prolifique. Il est assez facile à utiliser et rend les interfaces graphiques qui ne sont pas à moitié mauvaises.

dan_waterworth
la source
Quelle est la richesse de la communauté? À quelle vitesse les réponses arrivent-elles sur son forum?
RPK
1
@RPK, je n'en ai aucune idée, je n'ai jamais eu à demander de l'aide, tout est assez facile à utiliser.
dan_waterworth
Je ne suis pas sûr que "prolifique" soit le bon mot. "produisant une progéniture, des jeunes, des fruits, etc., abondamment; très fructueux: un poirier prolifique" Peut-être "populaire" ou "formidable".
S.Lott
@ S.Lott, prolifique: "De même produisant des résultats ou travaillant en abondance". (deuxième définition wiktionnaire). "Servir à produire; fécond des résultats; actif; comme, un cerveau prolifique; une controverse prolifique du mal." (Webster's Revised Unabridged Dictionary (1913 + 1828))
dan_waterworth
prolifique comme dans "pyGTK produit beaucoup d'applications?" Semble tendu. Les gens produisent des applicatios. pyGTK est une fondation populaire, peut-être, mais il ne semble pas être le producteur.
S.Lott
0

Gtk3 est un framework GUI très mature. Il a des liaisons Python natives (GObject Introspection) et beaucoup de documentation . Si vous faites pas mal de GUI, pensez à utiliser Anjuta . Anjuta possède une interface glisser-déposer pour configurer facilement vos widgets.

WxWidgets est assez bon, mais il n'y a pas de moyen facile d'avoir des rappels Python générés dynamiquement comme Anjuta le fait pour Gtk.

PyGtk est désormais obsolète au profit des liaisons Gtk3 vers Python (GObject Introspection)

PyQt est également un joueur dans l'interface graphique Python, mais il n'a pas une grande communauté.

BoaConstructor est plus longtemps entretenu et serait stupide à utiliser.

theGtknerd
la source