2010-06-02 2 views
3

Je dois créer une interface graphique simple basée sur Windows pour une application de bureau qui sera téléchargée par les utilisateurs finaux. L'application est écrite en python et sera empaquetée en tant qu'installateur ou exécutable.Python: bibliothèque GUI Windows attrayante, propre et conditionnable

La fonctionnalité dont j'ai besoin est simple: sélection dans différentes listes, affichage des barres de progression, etc. Pas d'animations, de sprites ou d'autres objets exotiques ou taxis.

Il semble qu'il y ait plusieurs options pour les bibliothèques d'interface graphique Python (Tk, QT, wxPython, Gtk, etc.). Que recommandez-vous que:

  • est facile à apprendre et à maintenir
  • Peut être proprement emballé à l'aide py2exe ou quelque chose de similaire
  • est joli

[Mise à jour] Pour ce que ça vaut, je fini en allant avec tkinter. Il est assez bien documenté, peut être rendu beau (utilisez principalement des polices natives), et surtout il est livré avec Python, donc il n'y a rien de plus à craindre. wxpython avait également l'air bien, mais le téléchargement était de 10M environ, et je ne voulais pas ajouter ce poids supplémentaire aux paquets que je distribue.

+1

Voir cette question: http://stackoverflow.com/questions/2181948/qt4-gtk-wxwidgets-or-ironpython-for-a-native-windows-app-using-python/2182074 Notez que [Pyside] (http://www.pyside.org/) a évolué depuis et semble prêt à être utilisé, donc la licence ne sera plus un problème. –

Répondre

3

tkinter Le principal avantage (IMHO!) Est qu'il vient avec Python (au moins sur Windows). Il semble laid, et il n'y a pas de barre de progression ou quelque chose comme ça (au moins pas intégré). Étant une enveloppe mince autour de Tk, son API ne se sent pas très élégant ou intuitif. Cependant, il y a quelques bonnes ressources Tkinter sur le web, donc apprendre n'est pas nécessairement une douleur.

Pour toute tentative d'interface graphique sérieuse, j'irais aussi pour wxPython. Cependant, je ne connais pas l'emballage. Mais je ne m'attendrais à aucun problème.

+0

laid est en grande partie la faute du concepteur et codeur et, bien sûr, dans l'œil du spectateur. Tk lui-même n'est pas intrinsèquement moche, c'est juste que certaines valeurs par défaut sont un peu obsolètes. Les développeurs professionnels peuvent créer des applications Tk pratiquement indiscernables des autres kits d'outils. –

+1

Bryan, si vous avez des conseils pour rendre Tkinter attrayant/natif, je les apprécierais. – Parand

+0

@Parand: La réponse la plus simple que je puisse donner est d'utiliser des widgets à thème, qui sont devenus disponibles avec Tk 8.5. Consultez http://code.google.com/p/pyttk/. Notez que ce n'est pas exactement une fonctionnalité de pointe - les widgets à thème sont disponibles pour Tcl/Tk depuis de nombreuses années, mais malheureusement, Tkinter est à la traîne de l'état de l'art. –

1

J'ai déjà utilisé wxPython (pour les déploiements Mac/Windows). Cela a bien fonctionné. Et il semble plus beau que Tk :)

1

En utilisant à la fois wxPython et TKinter, je dirais que wxPython est plus joli et facile à apprendre.

Bien que vous ayez indiqué que vous envisagiez d'utiliser le programme pour Windows, il est important de mentionner que j'ai rencontré des problèmes avec TKinter sur Mac ne fonctionnant pas correctement.

+0

Personnellement, je ne suis pas d'accord avec la facilité d'apprentissage. Tkinter et wxPython ont certainement des philosophies différentes, et chacun sera plus facile à comprendre pour certains, plus difficile pour d'autres. –

3

J'ai le recommended wxPython dans le passé et c'est toujours un excellent outil. Les autres me semblaient toujours un peu pesants.

Il y a des instructions sur le web qui montrent exactement how to package a wxPython GUI.

La section wxAui en particulier peut donner quelques très propres/résultats utilisables:

3

la plus belle que je peux suggérer est PyQt (presque native), sinon une bonne idée serait d'utiliser directement IronPython qui est code natif .net.

De toute façon, rien ne vaut le tkinter pour le multi-plateforme et la convivialité de l'emballage.