J’aimerais développer une application multiplate-forme de petite / moyenne taille (y compris une interface graphique).
Mes antécédents: principalement des applications Web avec des architectures MVC, à la fois en Python (Pylons + SqlAlchemy) et en Java (connaissent bien le langage, mais ne l’aiment pas beaucoup). Je connais aussi du C #. Jusqu’à présent, je n’ai aucune expérience en programmation d’interface graphique (ni Windows Forms, Swing ni QT).
Je prévois d’utiliser SQLite pour le stockage de données: c’est une solution inter plate-forme intéressante qui présente quelques fonctionnalités puissantes (par exemple, la recherche en texte intégral, qui manque à SQL Server Compact).
J’ai fait des recherches et voici mes options préférées:
1) QT, Python (PyQT ou PySide) et SQLAlchemy
avantages:
les inconvénients:
2) .NET / Mono, Windows Forms, C #, NHibernate (Courant), System.Data.SQLite
avantages:
les inconvénients:
3) JVM, Java + Jython, Swing, SQLAlchemy
(Je suis émotionnellement biaisé contre celui-ci, mais répertorié par souci d’exhaustivité)
avantages:
les inconvénients:
(Options que j’ai exclues … juste pour éviter les discussions):
– wxWidgets / wxPython (maintenant que QT est LGPLed)
– GTK / PyGTK
L’aspect de l’application finale est très important pour moi. Les stacks technologiques ci-dessus sont très différentes (PyQT, .NET WinForms, JVM Swing) et nécessitent un peu de temps pour devenir efficaces. Ainsi:
Quelle alternative recommanderiez-vous et pourquoi?
Je suis un gars de Python et utilise moi-même PyQt, et je peux le recommander sans réserve. Concernant vos inconvénients:
compilation, dissortingbution et déploiement plus difficiles?
Non, pas vraiment. Pour de nombreux projets, une setup.py
complète.py pour setup.py
par exemple, peut contenir moins de 30 lignes qu’il est rarement nécessaire de modifier (la plupart import
dépendances d’ import
sont détectées automatiquement, il suffit de spécifier les quelques modules non reconnus), puis python setup.py
construira un exécutable autonome. Ensuite, vous pouvez le dissortingbuer comme par exemple un fichier C ++ .exe.
aucune expérience QT
Je n’avais pas d’expérience graphique remarquable lorsque j’ai commencé avec Qt (seulement un peu de bidouillage avec Tkinter), mais j’ai appris à aimer Qt. La plupart du temps, tous les widgets fonctionnent de manière transparente et font ce qu’ils sont censés faire – et ils sont nombreux pour de nombreuses raisons. Vous l’appelez, il y a probablement un widget qui le fait, et n’ennuie pas l’utilisateur en étant à moitié assommé. Toutes les bonnes choses avec lesquelles nous avons été gâtés sont là.
Qt est énorme, mais la documentation PyQt répond à la plupart des questions avec un effort de recherche raisonnable. Et si tout échoue et que vous connaissez un peu le C ++, vous pouvez également consulter les ressources Qt.
QT Designer pas aussi bien que le concepteur Visual Studio Winforms
Je ne connais pas le concepteur VS Winforms, mais je dois admettre que le concepteur Qt fait défaut. J’ai fini par faire un croquis de l’interface utilisateur dans le concepteur, générer le code, le nettoyer et prendre soin des détails restants à la main. Cela fonctionne bien jusqu’à présent, mais mes projets sont plutôt petits.
PS:
(maintenant que QT est LGPLed)
PyQt est encore uniquement sous GPL. PySide est LGPL, oui, mais ce n’est pas si mature, si c’est une préoccupation. Le site Web du projet indique que “le démarrage du développement sur PySide devrait être assez sûr maintenant”.