Question

Question simple:

  • Quelles sont les API de l'interface graphique Python disponibles et quels sont les avantages d'une API donnée?

Je ne cherche pas une guerre de religion ici, je veux juste avoir une bonne idée de tout ce qui existe en termes d'API d'interface graphique Python.

Était-ce utile?

Autres conseils

J'ai utilisé Tkinter et wxPython. Tkinter est assez basique et n'utilise pas de widgets natifs. Cela signifie que les applications Tkinter seront identiques sur toutes les plateformes - cela peut paraître intéressant, mais en pratique, cela signifie qu'elles ont une apparence laide sur n'importe quelle plateforme: - / Néanmoins, c'est assez facile à utiliser. J'ai trouvé Penser à Tkinter très utile lorsque j'apprenais, parce que je n'avais jamais fait de programmation d'interface graphique auparavant. Si des éléments tels que les cadres, les algorithmes de présentation, les boutons et les liaisons vous sont familiers, vous pouvez toutefois sauter cette étape.

Vous pouvez augmenter Tkinter avec Tix (mais sachez que Tix ne fonctionne pas bien avec py2exe). Découvrez également les Megawidgets Python, qui construisent des contrôles plus avancés utilisant les bases de Tkinter.

Enfin, Tkinter joue bien avec le shell: vous pouvez démarrer l’interpréteur, faire des choses comme «importer tkinter», «tk = tkinter.Tk ()», etc. et construire votre interface graphique de manière interactive (et ce sera réactif). (Je pense cependant que cela ne fonctionne pas si vous utilisez IDLE)

wxPython est beaucoup plus esthétique et est livré avec une gamme de contrôles beaucoup plus étendue. Il est multi-plateforme (même si cela semble un peu capricieux sur mon Mac) et utilise des contrôles natifs sur chaque plate-forme. C'est un peu déroutant, cependant. Il est également livré avec une application de démonstration qui présente la plupart de ses fonctionnalités et fournit un banc d'essai que vous pouvez expérimenter. Quelques réflexions spécifiques sur wxPython:

  • Il existe trois (?) différentes façons de disposer les widgets. Ignorer deux d'entre eux; juste utiliser Sizers. Et même dans ce cas, vous pouvez utiliser n’importe quel agencement en utilisant uniquement BoxSizer et GridBagSizer.
  • Tous les widgets wx ont des identifiants. Vous n'avez pas besoin de vous soucier de ce que sont les identifiants, mais dans l'ancien temps (je pense), vous deviez le savoir, donc un ancien code sera jonché d'affectations d'identifiants explicites. Et la plupart des codes de démonstration auront -1 partout comme paramètre ID (malgré le fait que toutes les méthodes ont pour mot clé ID comme paramètre de mot clé dont la valeur par défaut est -1 de toute façon).
  • Assurez-vous de disposer des documents standard wxWidgets ainsi que de la démo wxPython - vous en avez besoin à la fois.
  • Si vous voulez utiliser wxPython avec py2exe et que tout se passe bien sous Windows XP, vous avez besoin de quelques astuces dans votre fichier setup.py. Voir ici

PyQt est excellent si vous avez une expérience ou un intérêt pour Qt.

http://www.riverbankcomputing.co.uk/software/pyqt/intro

La plupart des API de l'interface graphique python encapsulent les API les plus courantes de l'interface c / c ++. Vous avez un wrapper python pour gtk, un wrapper python pour qt, un wrapper python pour .NET, etc. etc.

Cela dépend donc vraiment de vos besoins. Si vous recherchez le moyen le plus simple de dessiner des widgets d’apparence native sous Linux, Mac et Windows, utilisez wxPython (wrapper python pour les widgets WX). Si le multi-plateforme ne fait pas partie de vos besoins, d'autres bibliothèques pourraient être plus utiles.

Au lieu de publier une liste de vos options, je vais donner mon humble avis:

Je suis amoureux de wxPython.

J’ai utilisé Qt en C ++ et Tk il y a bien longtemps, mais ce qui me rend vraiment comme wxPython, c’est la démo que vous obtenez avec. Dans la démo, vous pouvez parcourir tous les différents cadres de widgets, etc., qui font partie de la structure, voir le code source et voir à quoi il ressemble pendant son exécution.

J'ai eu quelques problèmes pour obtenir la version Linux construite et installée, mais maintenant que je l'ai disponible, je l'utilise tout le temps. J'ai utilisé wxPython pour de petites applications d'analyse de données et j'ai écrit plusieurs outils internes liés à la comparaison des résultats de tests, à la fusion de code source, etc.

J'ai trouvé ce lien très longtemps: http://www.awaretek.com/toolkits .html . Il suggère une prise en compte de vos critères. Pour moi, cela suggère wxPython tout le temps. Quoi qu'il en soit, cela vous donne un tas de partitions sur les différents kits d'outils. Ce qui est juste pour moi peut ne pas l'être pour toi. Mais il vous indique comment tous les scores ont été marqués en fonction de vos critères. Si vous n'aimez pas le top toolkit pour une raison quelconque, vous pouvez voir ceux qui correspondent le mieux à vos critères.

QT / GTK / WxWidgets (anciennement wxWindows) semble faire partie des kits d’interface graphique multi-plateformes les plus matures. Le seul problème est qu'aucun n'est installé avec l'installation par défaut de Python. Vous devrez donc peut-être compiler les bibliothèques. Si vous voulez quelque chose qui ne nécessite aucune installation requise, alors utilisez TKInter car, comme cela a été mentionné, il est installé par défaut avec Python.

Quoi qu’il en soit, mes critères étaient 9 sur la facilité d’utilisation, 10 sur la maturité de la documentation / widgets, 10 sur la base installée, 5 sur les générateurs de code gui, 10 sur l’apparence native pour Windows / Linux et 1 et 5 pour le dernier. deux, je ne suis pas gros dans Mac OSX (même avec un 10 ici, il suggère wxpython).

La

carte Python est très facile à utiliser. C'est ce que je recommanderais.

Voici leur écriture:

  

PythonCard est un kit de construction d'interface graphique   pour la construction de postes de travail multiplates-formes   applications sur Windows, Mac OS X et   Linux, en utilisant le langage Python.

     

La devise de PythonCard est "Des choses simples   devrait être des choses simples et complexes   devrait être possible. "

     

PythonCard est fait pour vous si vous voulez   développer rapidement des applications graphiques   et facilement avec un minimum d'effort   et codage. La carte HyperCard d'Apple en est une   de nos inspirations; simple, pourtant   puissant.

     

PythonCard utilise wxPython. Si vous êtes   déjà familier avec wxPython, juste   PythonCard comme moyen plus simple   de faire des programmes wxPython avec un   beaucoup d'échantillons et d'outils déjà   en place pour vous permettre de copier et sous-classe   et des outils pour vous aider à construire   applications multiplates-formes.

  

EasyGUI est différent des autres interfaces graphiques car EasyGUI n'est PAS piloté par les événements. Il vous permet de programmer de manière linéaire traditionnelle et d’établir des boîtes de dialogue pour une entrée et une sortie simples lorsque vous en avez besoin. Si vous n'avez pas encore appris le paradigme basé sur les événements pour la programmation d'interface graphique, EasyGUI vous permettra d'être immédiatement productif avec des tâches très élémentaires. Plus tard, si vous souhaitez effectuer la transition vers un paradigme d'interface graphique utilisateur, vous pouvez le faire avec un package d'interface graphique plus puissant, tel que anygui, PythonCard, Tkinter, wxPython, etc.

site Web EasyGui

WX a des problèmes sur le Mac.

J’ai jeté un coup d’œil ici, car je souhaite obtenir une API à interface utilisateur pilotée par les événements pour effectuer certaines tâches en Python. J'ai installé wx sur mon mac dans MatPlotLib, mais cela ne fonctionne pas correctement. Il ne prendra pas en place du clavier. Je l'ai installé trois fois sur trois systèmes d'exploitation Mac différents, et bien que cela ait fonctionné la première fois, les deux autres fois, j'ai eu ce problème.

Cette version que j'utilise avec la distribution d'Enthought, aucune installation n'a donc été nécessaire. Quand je l'ai installé séparément, il y avait tellement d'installations dépendantes que c'était un essai à installer.

D'après ce que j'ai lu ici, je vais essayer Tkinter, car cela doit être simple et multiplate-forme, mais je pensais simplement partager ce qui précède avec vous. J'aime le système d'exploitation Mac pour différentes raisons, mais les outils python s'installent beaucoup plus facilement sous Windows (et probablement sous Linux). Je pensais juste que je donnerais une perspective Mac ici.

J'aime wxPython ou Tk.

Tk est livré avec la distribution Python standard, vous n'avez donc pas besoin d'installer autre chose.

wxPython (wxWigets) semble beaucoup plus puissant et beaucoup plus joli. Cela fonctionne aussi bien sur plusieurs plates-formes (mais pas parfaitement, car il utilise différentes API graphiques sous-jacentes sur des types de systèmes diff)

Je préfère PyGTK, car je suis un gars de GNOME. Utiliser PyGTK me semble très pythonique. L’organisation du code semble cohérente, la documentation est propre et complète et c’est une boîte à outils très facile à utiliser (sauf peut-être pour Treeviews).

Il n’existe pas de créateur d’interfaces graphiques convivial pour Python. C’est étonnant de constater que les petits langages de script comme AutoIt et AutoHotkey ont des concepteurs d’interface graphique très simples à utiliser. Allez, disciples de Python, tu ne peux pas faire mieux?

Je travaille avec wxPython depuis quelques années et j'aime beaucoup. La meilleure chose à propos de wxPython est que l’interface utilisateur a un aspect natif sur les différentes plates-formes sur lesquelles elle tourne (excellente sous Windows et Linux, mais pas aussi bien sous OS / X).

L'API manque de cohérence, mais vous vous y habituez rapidement.

Vous pouvez consulter Testuff (prise éhontée, car c'est mon propre produit) pour avoir une idée de quoi peut être fait avec wxPython (bien que je dois dire, avec pas mal d’effort).

wxPython, et je suppose que PyGTK aussi, peut utiliser wxGlade pour vous aider à concevoir la plupart des interfaces utilisateur que vous allez créer. C'est un gros plus. Vous n'avez pas à apprendre à coder à la main l'interface graphique tant que vous n'êtes pas prêt. J'ai créé plusieurs programmes d'interface graphique directement à partir de wxGlade avant de maîtriser suffisamment le fonctionnement de wxPython pour essayer de coder à la main.

PyQt possède un dispositif de présentation graphique similaire, mais je n’ai jamais eu la chance de le faire compiler correctement. Il y avait aussi un manque de tutoriels et de documentation montrant comment créer le code Python final; la plupart des documents que j'ai trouvés faisaient référence à la version C ++ de Qt.

Tkinter convient aux programmes rapides et sales, mais, de manière réaliste, si vous utilisez wxGlade, il sera peut-être plus rapide de créer le programme avec wxPython. Au minimum, vous pouvez utiliser wxGlade pour afficher une représentation visuelle du programme à un client plutôt que de prendre le temps de coder à la main le "factice". programme.

Il existe des gui-api spécifiques au python, tels que kivy (successeur ou pymt), pygui (basé sur pyrex), pyui et nufox, qui ne se comparent pas aux outils plus robustes tels que wxpython, pyqt, pygtk et tkinter.

Ce ne sont que des outils optionnels supplémentaires.

La seule chose qui les rend uniques est qu’elles sont des api spécifiques à python, tout comme il existe des prima (api spécifiques à perl) et des chaussures (api spécifique à ruby). Cela nous aide à comprendre que lorsque tk est le port de api basé sur tcl (et que les autres sont basés sur c et c ++), ces API sont spécifiquement créées pour les trois langages de script respectifs.

Parmi ceux-ci, kivy est le plus robuste, alors que le codage de pygui est considéré comme très python, pyui est le moins robuste mais vaut la peine d’être essayé et doit être portable partout. p>

Ensuite, il y a jpype qui est une boîte à outils utilisable avec jython et pydev, et qui est en fait le java du java personnalisé sous python / jython-interface.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top