Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Module graphique moderne

+6 votes

J'ai l'impression que tous les modules graphiques proposés pour python n'offrent la possibilité de réaliser QUE des fenêtres dignes de windows 98.

Connaissez vous un exemple d'un module qui a permis de créer une fenêtre du type Skype ?

demandé 10-Jul-2015 par Shoooryuken (126 points)
edité 20-Oct-2015 par max

J'ai l'impression que tu vises tkinter ;)

10 Réponses

+2 votes

je ne l'ai jamais utilisé pleinement, et je n'ai jamais eu de retour là dessus (d'ailleurs je suis preneur!)...
il y a le module traits
et son interface graphique traitsui, qui peut se personnaliser, par exemple ici
exemple de thème pour traitsui
tout se personnalise, donc tu dois probablement pouvoir faire ce que tu veux...

répondu 10-Jul-2015 par Lhassa (798 points)
edité 10-Jul-2015 par Lhassa

Perso, je n'aime pas le rendu des interfaces, on dirait du windev ;)

traitsUI permet de choisir le rendu graphique (choix entre PyQT ey wxPython si je dis pas de bétise), et ça impact énormément le rendu final. Ce n'est "que" une surcouche permettant de construire rapidement des applications basé sur le module Traits.

+8 votes

Skype est écrit en QT. PyQT est donc ce qu'il te faut. Mais attention, il faut bien comprendre que skype a custo tout les widgets, c'est un sacré boulot, il n'ont pas juste lancé 3 bouts de code et espéré que ça marche.

répondu 10-Jul-2015 par Sam (4,984 points)

Oui je sais bien, c'est pour cela que je demande si il existait un module permettant, sans passer 1 an de dev avec 12 collaborateurs, a réaliser une interface digne de 2015?

je vais tester les 2 modules proposés qui m'ont l'air prometteur. et éventuellement me repencher sur pyQT au cas ou :)

On peut parfaitement réaliser une interface moderne avec PyQt (ou PySide), pour des trucs simples il n'y aura pas grand chose à customiser. Ensuite, si tu cherche à faire des trucs plus personnalisés, il faudra de l'investissement quelle que soit la lib utilisée (et c'est vrai pas seulement en python).

+2 votes

Erf @Max m'a volé l'idée de PyQt ;)

Bon osef, j'avais encore un tour dans mon sac, pourquoi ne pas jeter un coup d'oeil du côté de ttk ?

T'as des rendus graphiques qui ressemblent à ça :
enter image description here

ou encore à ça

ou un truc plus basique genre :
enter image description here

Ps : Pour en savoir plus sur les GUI python ça se passe par ainsi que par ici

répondu 10-Jul-2015 par boblinux (3,092 points)
edité 10-Jul-2015 par boblinux

merci pour les liens, intéressant!

+4 votes

Les autres réponses ont déjà bien expliqué pourquoi la dénomination de GUI moderne est fallacieuse. Je tiens à indiquer que PyQt est une solution particulièrement intéressante, notamment avec l'usage du très puissant QML.

Ce n'est rien d'autre qu'un CSS pour GUI, mais il permet des traitements extrêmement puissants, accélérés avec openGL.

Personnellement, je n'utiliserai pas Qt sans le QML, maintenant que je sait ce qu'il est possible de faire, et cela avec un DSL fort simple.
Et pyQt est compatible python 3, ce qui le place en dehors du club des dinosaures.

Quelques liens :
- des exemples très pros;
- des codes d'exemple plus basiques, mais nécessaires pour un traitement avancé;
- un projet qui utilise QML pour la quasi-totalité du traitement;

répondu 11-Jul-2015 par lucas (2,332 points)

Oui mais ce qu'il y a de casse-couille, c'est comme avec Kivy (qui s'est inspiré du même procédé), ce sont les échanges entre le QML et ton appli.

Petite question subsidiaire, est-ce que PySide est toujours développé ?

Échanges QML/appli ? I.e. ?

PySide semble toujours relativement maintenu (pour Qt4), malgré l'annonce faite il y a de cela quelques mois concernant son abandon.

Je ne conseillerais pas pySide, ne serais-ce que pour l'absence de compatibilité python 3, et qu'il est temps d'arrêter d'utiliser des dinosaures dans de nouveaux projets. Concernant les licences, cependant… pyQt se limite à GPL ou commercial.

Qt quick semble être, ici avec pySide, utilisable pour la majorité des cas.

Le QML d'après ce que tu en dis ça ressemble au FXML de Java FX... avec du CSS pour customiser les widget... J'ai eu l'occasion de tester et c'est super !
Je note ça pour Qt et son binding pyQT à garder sous le coude.

+3 votes

pour donner une alternative supplémentaire, il parait que pyglet est bien comme GUI.
Mais pour ton projet actuel pyQT à l'air mieux.

répondu 11-Jul-2015 par buffalo974 (2,886 points)

pyglet est effectivement très bien (pythonique, simple d'accès, efficace, bien pensée), mais n'a rien de base pour produire des fenêtre pour du pousse bouton.

Ce serais un projet intéressant, de proposer des procédures toutes faites et généralistes pour la création, le placement et le trigger de boutons, sliders,…

+2 votes

Kivy (homepage). Casse-c$ù*lles à installer dans certains cas (mais ça s'améliore à chaque version).

Kivy utilise Pygame (d'où le côté casse-pieds à installer) et définit une série de widgets, le point fort à mon goût est la définition d'une interface par une sorte de YAML séparé, ce qui permet de différencier. Ils fournisent aussi un howto pour compiler vers android, iOS, si besoin.

rendu graphique accéléré (SDL), 3D possible, mais limité à une fenêtre.

répondu 12-Jul-2015 par Atrament (258 points)

J'ai bossé pas mal avec Kivy, puissant mais beaucoup de travail si tu veux vraiment de l'interface utilisateur. Je crois que le meilleur choix reste PyQT ou PySide.

Par contre avec Kivy, tu peux facilement porter l'application vers Android ou IOS. Tu peux aussi le packager pour du Windows, mais ça reste plus lourd que Qt/QML.

+3 votes

ET pourquoi pas wxPython ? Pour du moderne c'est natif de l'OS c'est à dire que sous Windows ça ressemble à du Windows et sous Linux c'est comme du linux. C'est le wrapper Python pour la librairie C++ wxWidgets.

J'utilise ça en production pour le boulot et on distribue ça pour Windows et Linux. Pas eu de soucis jusqu'à présent.

J'attends avec beaucoup d'impatience la version 3 de wxPython qui ne sera pas compatible avec la 2.... car ils font une refonte totale du wrapper Python pour homogénéiser le code et la structure.

Ça tourne sous Python 2 et 3 et ça se passe ici : http://www.wxpython.org/

répondu 17-Jul-2015 par Abject (148 points)

Pareil, j'utilise aussi beaucoup Wx...Jamais eu de problème non plus pour packager...

Il ne faut pas oublier que le binding Python 3 n'est pas distribué de la même manière que celui sous Python 2, pour cela il faut se tourner vers "Phoenix" qui est un fork/refonte (par la même équipe ?)

Alors pour Phoenix comme pour wxPython c'est me semble-t-il le même gars qui dirige le développement. Phoenix étant le nom de la nouvelle version de wxPython.
Phoenix doc: http://wxpython.org/Phoenix/docs/html/main.html
De ce que j'en ai compris c'est une refonte intégrale avec une perte de l'historique et des conventions C++ pour se tourner vers du code Pythonique.Le dépôt Github est ici : https://github.com/wxWidgets/Phoenix
C'est surprenant du peu d'activité d'un tel projet qui est quand même assez massivement utilisé....

+1 vote

On peut aussi chercher du coté de PyGObject qui est un binding de GTK+3, la lib graphique de gnome.
Je n'est jamais testé la version python mais j'avais apprécié de travailler sur la version C++, gtkmm que je trouvais plus accessible que Qt.

https://wiki.gnome.org/action/show/Projects/PyGObject?action=show&redirect=PyGObject

répondu 21-Jul-2015 par Andarus (172 points)

Par contre, le rendu Gnome sur un Windows fait un peu peur aux mamies !

GTK c'est pas fantastique si l'on veut de la portabilité... Compliqué sous Windows et pas facile sous OS X... Et sous linux tout dépend de l'environnement, KDE ne fournit pas de base les librairies GTK... Sinon pour du Linux Gnome c'est super !

+2 votes

Après pour des scripts à l'arrache, j'utilise un module que je trouve pratique car il permet de développer une interface minimale rapidement, le module se nomme Sandals disponible à cette URL :

https://github.com/georgewalton/Sandals

Un petit exemple :

from sandals import *

    with window():

      @button("Create a popup box")
      def makePopupBox():
        showInfo(message = "You clicked the button")
répondu 29-Jul-2015 par DoubleNain (1,718 points)

J'adore le concept !
L'API a l'air claire, et le code source est miniscule, du coup je vais pouvoir l'étudier !
Merci pour la belle découverte !

@Zara

L'auteur vient d'ajouter la possibilité de redimensionner la fenêtre et on peut intégrer des images également...

0 votes

que pensez vous de pySFML ?
il existe même une version pour cython.

Je ne sais pas si il y a un moyen d'utiliser les websocket, car pySFML peut gerer la partie réseau.

répondu 17-Oct-2015 par buffalo974 (2,886 points)
...