#1 Le 02/12/2013, à 14:40
- waxdesf
perdu entre Python GTK+ 3, GTK+, PyGObject, Pygi...
Bonjour communauté !
Je suis développeur novice, en python, et je passe à l'étape supérieure en créant ma première interface graphique.
J'ai suivi des tutos, et je me suis fait une idée du marché : tkinter, pyQt, wx-python, PyGtk...
Mais j'avoue que je suis un peu perdu. Si quelqu'un pouvait m'aider à trouver mon chemin, j'aurais quelques questions :
relatives à PyGobject :
PyGObject est-il bien la "nouvelle version" de PyGtk,?
The Python GTK+ 3 Tutorial. Est-ce qu'il existe une documentation plus fournie, ou alternative ? J'ai tout suivi, et j'ai encore de nombreuses lacunes, par exemple, je n'arrive pas à créer proprement un programme de plusieurs fenêtres
J'utilise beaucoup les tutos du (ex) Site du Zéro, mais j'ai l'impression qu'aucun n'est "à jour" pour qui voudrait apprendre à développer directement avec PyGobject. j'ai suivi PyGTK, parcouru Créez une interface graphique avec Gtk+, mais je ne suis pas sûr que ça corresponde vraiment à ce dont j'ai besoin, ni qu'ils soient à jour.
Existe-t-il une référence pour découvrir (et approfondir) PyGobject (livre ou tuto / anglais ou français ) ?
PyGi est-il bien la même chose que PyGObject ?
Générales :
Est-ce une bonne idée de commencer à développer des GUI avec PyGObject ?
Pour apprendre, est-ce que Glade va vraiment me simplifier la vie, ou me la compliquer ?
Quelle interface recommanderiez vous à un novice ? Je n'ai pas peur de la difficulté, donc quitte à apprendre, je préfère apprendre directement l'environnement de développement que je vais utiliser à terme.
Par exemple tkinter offre-t-il les mêmes possibilités que PyGObject ? J'ai dans l'idée que le second est tout même plus élaboré, mais peut-être que pour un débutant cette élaboration est plus contraignante, et pas vraiment utile ?
Désolé pour le flot de questions, mais j'ai besoin de clarifier la situation pour ne pas continuer à coder tête baissée sans vraiment savoir où je vais. J'espère que quelqu'un aura la patience de bien vouloir répondre ne serait-ce qu'à quelques unes d'entre elles
Merci Communauté !
Ubuntu 17.10 / ASUS S550CM
Intel i7-3517U 1.9GHz
Nvidia GT 635M / Intel HD
Hors ligne
#2 Le 02/12/2013, à 17:31
- moths-art
Re : perdu entre Python GTK+ 3, GTK+, PyGObject, Pygi...
pyGObject est-il la nouvelle version de PyGtk?
Ben non! (je sais pas d’où tu tiens ça)
Gobject est une surcouche au C utilisé dans GTK pour lui ajouter le concept objet.
PyGObject est un wrapper pour le python.
Je n'ai pas fait de GTK depuis un moment mais de souvenir les tutos sont souvent spartiates ou anciens.
Il faut lire l'API C le plus souvent pour savoir ce que tu veux faire.
Perso, à une époque, je regardais le code source de projets qui utilisaient la même fonctionnalité (mypaint en l'occurence).
Est-ce une bonne idée de commencer à développer des GUI avec PyGObject ?
Tu te doutes que ma réponse est non.
Pour apprendre, est-ce que Glade va vraiment me simplifier la vie, ou me la compliquer ?
J'ai envie de dire : ça dépend.
Si ton appli est vraiment petite (4 boutons qui se battent en duel) et qu'elle n'a pas prétention d'intégrer des trucs *compliqué* genre des GTKTreeView, des onglets, fenêtres modales etc.
tout programmer en python me semble plus judicieux. (surtout si tu débutes)
Dans le cas contraire, Glade à quand même l'avantage de créer ton appli graphiquement et de bien séparer le visu du code fonctionnel.
Par exemple tkinter offre-t-il les mêmes possibilités que PyGObject ?
Tkinter offre les mêmes possibilités et ai souvent mieux intégré à python. Il est fait également pour être très portable (genre si tu veux faire tourner sous *Bsd et autres kernels atypiques)
Maintenant, le visu te semblera d'une autre époque et si tu veux un truc un minimum *beau*, il vaut mieux partir sur du GTK ou QT.
Maintenant, si tu veux vraiment dev une GUI moderne, GTK est vraiment à des années lumières de QT!
Quelle interface recommanderiez vous à un novice ? Je n'ai pas peur de la difficulté, donc quitte à apprendre, je préfère apprendre directement l'environnement de développement que je vais utiliser à terme.
J'avais la même réflexion à mes débuts mais en réalité c'est un contre-sens.
Personne ne penserais à passer son permis moto alors qu'il n'a jamais fait de vélo.
Par analogie, quand tu vas croître dans ton apprentissage, tu changeras naturellement d'outils.
Commencer directement avec un environnement de dev trop complexe ne te permettra pas d'évoluer.
Désolé de te dire ça mais tu vas devoir faire pleins de trucs que tu trouveras inutiles par la suite.
D'ailleurs ça m'arrive encore (mais beaucoup moins) de programmer un truc et de me rendre compte qu'il existe déjà mieux ailleurs.
Ça peux paraître ingrats mais ça fait parti de l'apprentissage et je pense qu'il vaut mieux faire un mauvais choix, progresser et refaire avec une autre lib plutôt que de rester indéfiniment à la case conception/choix techno.
Site : https://mothsart.github.io Dépôts Git : https://github.com/mothsart PPAs : https://launchpad.net/~jerem-ferry
Hors ligne
#3 Le 02/12/2013, à 17:59
- waxdesf
Re : perdu entre Python GTK+ 3, GTK+, PyGObject, Pygi...
Merci pour cette réponse claire et complète.
Donc, si j'ai bien suivi, il vaut mieux que je code tout à la main et avec tkinter.
Je n'ai plus qu'à ajouter les 300 lignes de code déjà écrites avec Gtk à la liste des trucs inutiles, et repartir du début
Maintenant, le visu te semblera d'une autre époque et si tu veux un truc un minimum *beau*, il vaut mieux partir sur du GTK ou QT.
C'est pour ça que Gtk m'avait séduit, j'ai comparé deux Hello Word Tk & GTK, et je me suis dit qu'il n'y avait pas photo, intégration du thème, etc. Mais le prix à payer est la complexité, si j'ai bien compris. Pourtant la syntaxe générale m'avait semblé suffisamment similaire, et j'ai réussi à atteindre un pseudo-résultat assez vite, malgré quelques bugs assez importants. Le principal étant la non persistance des fenêtres annexes après fermeture, je ne comprends pas pourquoi : j'ouvre une fenêtre par un bouton depuis la fenêtre principale, elle s'affiche correctement. Je la ferme : si je l'ouvre à nouveau, elle est vierge.)
Quelques questions supplémentaires en réaction à ta réponse, si je peux me permettre :
Donc, si je veux créer mon interface en Qt pour mon programme écrit en python... j'utilise.. logiquement... PyQt ? (parfois j'ai l'impression d'enfoncer des portes, et je tombe sur des murs, donc j'y vais prudemment
)
Et je suppose qu'avec Qt, ça ne sera pas plus facile qu'avec Gtk ?
Est-il possible de bricoler une interface Tkinter pour la moderniser, ou vaut-il mieux réécrire tout pour une autre interface ?
Dernière modification par waxdesf (Le 02/12/2013, à 18:01)
Ubuntu 17.10 / ASUS S550CM
Intel i7-3517U 1.9GHz
Nvidia GT 635M / Intel HD
Hors ligne
#4 Le 02/12/2013, à 18:10
- waxdesf
Re : perdu entre Python GTK+ 3, GTK+, PyGObject, Pygi...
tuto Qt sur Open Classroom m'a l'air d'être un bon début, non ?
J'ai pas fini de lire du code, avant d'écrire proprement les miens !
Dernière modification par waxdesf (Le 02/12/2013, à 18:11)
Ubuntu 17.10 / ASUS S550CM
Intel i7-3517U 1.9GHz
Nvidia GT 635M / Intel HD
Hors ligne
#5 Le 04/12/2013, à 03:59
- temps
Re : perdu entre Python GTK+ 3, GTK+, PyGObject, Pygi...
Bonjour,
Quelle interface recommanderiez vous à un novice
Je pense avec plusieurs amis que c'est la SDL en C, en trois jours des enfants sans expérience arrivent à créer des jeux plateformes avec.
Pour GTK+ 3, en moins d'une heure j'avais ma fenêtre graphique (avec un main qui ouvre une page xml), mais depuis presque 15 jours je galère pour manipuler les fonctions à l'intérieur, les solutions que j'ai trouvées sont soit issues du forum, soit empirique à force de tester. Pour les autres questions, je ne sais pas, mais une construction xml en GTK+ 3, pour réaliser un graphisme me semble très très simple, on emboite les objets très facilement une fois qu'on a dessiner sur un papier l'aspect de la fenêtre qu'on désire, en plus tout se met à l'échelle tout seul.
Je pense que pour les tuto, il vaut mieux faire des recherches en utilisant le terme -zero, afin d'éviter tous les lieux contenant le terme zero
Cordialement
Dernière modification par temps (Le 04/12/2013, à 04:04)
Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination
https://www.letime.net
Hors ligne
#6 Le 04/12/2013, à 14:46
- waxdesf
Re : perdu entre Python GTK+ 3, GTK+, PyGObject, Pygi...
Merci du conseil, je vais regarder ça. Du coup SDL pour python, c'est PyGame ?
Je pense que pour les tuto, il vaut mieux faire des recherches en utilisant le terme -zero, afin d'éviter tous les lieux contenant le terme zero
Je peux demander pourquoi ? (la communauté n'est pas très accueillante, mais les tutos ?)
Dernière modification par waxdesf (Le 04/12/2013, à 14:48)
Ubuntu 17.10 / ASUS S550CM
Intel i7-3517U 1.9GHz
Nvidia GT 635M / Intel HD
Hors ligne
#7 Le 04/12/2013, à 18:43
- temps
Re : perdu entre Python GTK+ 3, GTK+, PyGObject, Pygi...
Bonjour,
Pour la SDL, c'est du langage C sous SDL.
L'utilisation est très simple.
Pour la recherche sur le navigateur, il ne faut pas oublier qu'on navigue sur la toile à l'aide de systèmes orientés pour travailler sur nos méthodes d'agencement d'idées. En exemple il existe des centaines de vidéo qui montre quel technologie pour un robinet et comment installer un robinet, mais lors de la recherche nous ne trouverons que des liens vers des artisans et en les enlevant plus que quelques liens toujours commerciaux, aucun lien à notre service.
Il arrive assez souvent lors de réunions du libre, que le sujet revienne "comment chercher l'information efficacement, même l'un d'entre nous avait créé un moteur dédié au tutos et informations du libre, mais malheureusement il n'a pas pu finir le projet et est partie sur bordeaux (raison professionnelles), moi au même moment j'ai créé le projet moteur de recherche système expert, mais mon projet collaboratif faute d'utilisateur ne s'est jamais rependu.
Pour faire plus simple, c'est empirique, il y a certain terme à enlever lors des recherches pour ne pas s'égarer et perdre du temps le zero en fait partie ensuite il faut toujours faire une demande sur le terme exact (placer les guillemets), quand il s'agit de code, parfois mettre un début de code nous permet d'avoir la réponse plus rapidement.
C'est juste un des effets des nouvelles techniques de communications induit par la toile, je doute pas qu'un jour qu'un jour je trouverai une page dédié sous kubuntu pour aider comment trouver les informations en évitant les pièges de moteurs de recherche.
Cordialement
Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination
https://www.letime.net
Hors ligne
#8 Le 05/12/2013, à 13:54
- moths-art
Re : perdu entre Python GTK+ 3, GTK+, PyGObject, Pygi...
Du coup SDL pour python, c'est PyGame ?
Non, SDL pour python, c'est PySDL2 : un wrapper. (API de SDL dispo sous python)
Maintenant: de ce que j'ai pu en voir (je suis pas expert pygame), pygame c'est amusé à porter en interne un wrapper de la SDL. (j'en ignore les raisons)
Pygame permet à mon sens beaucoup plus que la SDL qui reste dans l'ensemble une librairie bas niveau.
Site : https://mothsart.github.io Dépôts Git : https://github.com/mothsart PPAs : https://launchpad.net/~jerem-ferry
Hors ligne
#9 Le 13/12/2013, à 15:55
- Olivier_Dev
Re : perdu entre Python GTK+ 3, GTK+, PyGObject, Pygi...
Bonjour
je viens apporter mon grain de sel
Pygame est une excellente lib python si tu veux coder du jeux sur la base de la sdl.
L'interet est surtout de se faire la main sur les différents concepts propre au dev de jeux.
Maintenant: de ce que j'ai pu en voir (je suis pas expert pygame), pygame c'est amusé à porter en interne un wrapper de la SDL. (j'en ignore les raisons)
Les raisons sont que chez Pygame ils ont ecris un paquets de méthodes permettant de gérer les sprites par exemple, d'ou des méthodes prête a l'emploi qu'il faudrait recoder en partant directement de la sdl.
Pour ce qui est des interfaces graphiques, je te conseillerai Gtk, en premier temps en utilisant Glade ce qui te permettra de voir les différents type d'objets disponible et leurs noms.
gtk et gobject ce n'est pas la même chose, l'un est une lib graphique, l'autre un wrapper.
En gros si tu veux faire une fenetre avec des bouttons, des listes, des menus c'est Gtk qui fait ça.
ensuite Gtk ne fera pas tout, il sera bien souvent accompagner de GLib afin d'éviter les seg fault entre autre.
Le principe en Gtk c'est que les widgets seront connéctés a un signal pour une fonction, en gros tu diras a gtk que ton boutton au signal "clicked" devra appeler une fonction etc ...
une derniére chose importante lors de l utilisation d'un lib comme Gtk, c'est la notion de main loop, la lib graphique doit fonctionner dans une boucle infini pour afficher la partie graphique, cette loop est optimisée, Gtk.main() par exemple.
Lorsque l'on va executer du code dans cette loop, il va falloir faire attention de prendre les precautions necessaire lorsque l on va executer des appels de fonctions.
afin de ne pas la bloquer, des notions de thread et de Glib seront alors necessaire.
Hors ligne
#10 Le 17/12/2013, à 11:56
- waxdesf
Re : perdu entre Python GTK+ 3, GTK+, PyGObject, Pygi...
le zero en fait partie
Je suis assez familier avec la recherche web pour savoir qu'une exclusion de terme permet d'affiner, mais ce que je ne comprends pas ici, c'est pourquoi exclure "zéro" en particulier pour ce type de recherche ?
l'un d'entre nous avait créé un moteur dédié au tutos et informations du libre, mais malheureusement il n'a pas pu finir le projet et est partie sur bordeaux (raison professionnelles), moi au même moment j'ai créé le projet moteur de recherche système expert,
C'est regrettable : le projet mériterait vraiment de voir le jour. Quand on voit l'adresse qu'il faut parfois déployer pour obtenir des résultats pertinents avec les principaux moteurs, et le temps qu'il faut passer à découvrir / maîtriser d'autres outils, il est grand temps que des solutions grand public simples et efficaces s'imposent contre le paradigme du "google partout pour tout".
Merci pour les précisions moths-art & Olivier_Dev. En fait je ne développe pas de jeux, je ne suis pas sûr que pygame soit fait pour moi de toute façon. Je crois que je vais poursuivre avec tkinter puis Gtk, le premier est suffisant pour ce que je fais actuellement, tant pis pour l'esthétique, et pour la suite j'ai déjà acquis les bases du second, alors autant continuer dans cette direction.
Ubuntu 17.10 / ASUS S550CM
Intel i7-3517U 1.9GHz
Nvidia GT 635M / Intel HD
Hors ligne