Python est-il un bon choix pour développer des interfaces utilisateur? Si oui, wxPython ou Tkinter?


12

J'ai hâte de développer une application de bureau en utilisant Python. Je suis débutant et je n'ai pas une expertise suffisante en Python. Je suis également programmeur Java. Bien que j'ai une certaine expérience dans la création d'interfaces utilisateur à l'aide de Swing, je constate que les applications développées sur Swing sont trop lentes. Eh bien, cela pourrait être l'une des raisons pour lesquelles la plupart des implémentations principales sont effectuées en C / C ++ comme dans les navigateurs / jeux.

Développer une interface utilisateur en C ++ pourrait être une meilleure option, mais je préfère choisir un langage de programmation de haut niveau plutôt que C / C ++. J'ai donc opté pour Python en supposant qu'il fonctionnerait bien sur Java Swing car Python lui-même est nativement basé sur C / C ++.

Alors, puis-je aller de l'avant avec cette hypothèse que Python est meilleur que Java Swing pour développer une interface utilisateur? Ou suggérez-vous un langage meilleur que Python pour développer des interfaces utilisateur? Si je continue avec Python, quelle boîte à outils dois-je utiliser Tkinter ou wxPython et pourquoi?


4
Vos hypothèses semblent erronées. Python est construit sur C / C ++, mais la JVM l'est aussi (très probablement).
user281377

Pourquoi vous limiter à Tkinter et wxPython?
Anto

2
Je n'essaye pas de me limiter. J'avais l'impression que c'étaient les deux trousses à outils bien connues pour le développement de GUI.
Vamsi Emani

L'IDE Lazarus, le compilateur Free Pascal et Object Pascal constituent un moyen très rapide et facile de développer des interfaces graphiques.
systemovich

Réponses:


15

Je viens de commencer le développement d'une application de bureau Windows en utilisant python. J'utilise PyQt .

Il est très facile à installer et à mettre en service. Le tutoriel ici: http://zetcode.com/tutorials/pyqt4/firstprograms/ montre comment c'est facile, je vais montrer le code:

#!/usr/bin/python

# simple.py

import sys
from PyQt4 import QtGui

app = QtGui.QApplication(sys.argv)

widget = QtGui.QWidget()
widget.resize(250, 150)
widget.setWindowTitle('simple')
widget.show()

sys.exit(app.exec_())

Cela vous ouvre une fenêtre.

J'ai choisi Python / PyQt plutôt que C # / WPF parce que je veux apprendre le python et mon employeur me donne le temps.

Mon manager m'a recommandé PyQt par rapport à d'autres frameworks, car selon son expérience, il est plus facile à utiliser.



J'ai déjà utilisé PySide et cela fonctionne plutôt bien. Cependant, le développement futur de PySide est un peu dans les limbes car Nokia a vendu Qt.
jhocking

5

Si vous cherchez à développer une interface graphique native pour Windows ou OSX, je vous conseille d'utiliser Tkinter (c'est-à-dire la bibliothèque d'interface graphique Tk avec des vêtements pythoniques) car cela vous rapproche beaucoup plus de l'apparence native que wxPython (wxWidgets pour python) . Je ne trouve pas cela facile à quantifier, mais à mes yeux les captures d'écran Windows et OSX . YMMV. Je sais que Tk ( important: avec l'ensemble de widgets Ttk) est très fortement natif.

Si vous développez pour Linux… je ne peux pas vraiment vous conseiller honnêtement l'un sur l'autre, car j'ai perdu de vue l'aspect actuel de la plate-forme préférée. :-)


1
Notez que Tkinter ne fournit pas de nombreux widgets couramment utilisés. Par exemple, si vous voulez une barre de progression, vous devrez en écrire une vous-même ou en trouver une autre écrite par quelqu'un d'autre.
James

1
Attendez, mais wxWidgets utilise des éléments GUI natifs. Au moins, les liaisons C ++ le font. Je ne suis pas sûr de Python.
Zhehao Mao

@ZhehaoMao wxWidgets est un mélange d'éléments natifs et non natifs. Certains éléments ressemblent aux éléments natifs, mais sont en fait conçus sur mesure pour une API plus uniforme.
Hubert Grzeskowiak

3

Je dirais que c'est un bon choix si vous connaissez et aimez déjà Python. Sinon, utilisez le langage que vous connaissez déjà, qui est Java. La seule exception ici est s'il s'agit d'un projet d'apprentissage, auquel cas je suggérerais que l'expérience avec d'autres langues serait une bonne idée.

Mon point ici est que Python n'est pas vraiment meilleur ou pire que Java pour les applications d'interface utilisateur, alors utilisez l'outil avec lequel vous aimez travailler.


1

Le seul vrai conseil que l'on puisse donner pour toutes les questions comme celle-ci est "essayez-le et voyez si vous l'aimez" - les opinions des autres sur les langages de programmation (en particulier sur ce qui peut être leur langue la plus aimée ou la plus détestée) valent rarement beaucoup .

Cependant, ma valeur de 5 cents - pour créer des interfaces graphiques Windows simples et rapides, la combinaison de Python et wxWidgets fonctionne très bien. Mais comme je l'ai dit, essayez par vous-même - vous pouvez assembler quelque chose de simple mais utile en une heure environ, même sans beaucoup d'expérience Python (je n'en ai certainement pas beaucoup).


1

Au cas où quelqu'un se retrouverait ici via le moteur de recherche: vous pouvez générer rapidement des exemples Tkinter en utilisant le générateur de PAGE. Il génère du code décent qui vous donnera une idée de ce qu'il faudra pour arriver là où vous voulez aller. Cela exige certainement que vous acquiesciez à la généralité, comme le dit l'auteur, mais pour quelqu'un qui veut tester les eaux ou avoir une idée générale de sa destination, c'est un bon outil. PAGE sur SourceForge .


-1

Je pense que certains types d'applications sont assez gérables pour écrire en Python.

Par exemple, Task Coach est écrit en Python / wxPython. Ils utilisent un compilateur Python2exe comme py2app, py2exe etc. pour créer des exécutables multiplateformes d'aspect natif.


-1

Si vous êtes limité au développement dans l'écosystème Windows et utilisez Visual Studio, pensez à Iron Python. Iron Python est Python plus des objets .NET.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.