Rendez-vous sur Arrakis

C'est lorsque nous croyons savoir quelque chose qu'il faut justement réfléchir un peu plus profondément. F. Herbert

Programmer un GUI en python – Pourquoi TkInter ?

Même si la ligne de commande est un outil surpuissant, une interface graphique (GUI) peut s'avérer très pratique pour certains. Puisque j'aime bien bidouiller de petits outils en python, j'en suis arrivé à la question : qu'utiliser pour réaliser un GUI ?
J'ai donc découvert pygtk et wxwidgets... Et m'y suis cassé les dents.

En effet, ces deux bibliothèques sont très et même trop complètes. Par ailleurs, installer de si grosses dépendances pour juste quelques petits outils, ça me cassait les pieds. J'ai définitivement laissé tombé l'idée de maîtriser GTK quand j'ai vu le code du 3hg-menu. C'était totalement différent dans les widgets que ce que j'avais pu découvrir en écrivant le handymenu. Quelle plaie de voir des "deprecated" dans ses programmes, et ne pas trouver de la documentation à jour !

Après avoir perdu du temps avec GTK, je me suis tourné vers la bibliothèque Tk que j'avais pu croiser auparavant. Et aujourd'hui, je suis convaincu que c'est la plus adaptée à mes besoin, à la fois simple et puissante. Pour apprendre à programmer, elle est à mon avis la plus pratique.

J'ai donc envie de publier quelques billets sur le sujet, à commencer par celui-ci.

Pourquoi TkInter me paraît être le meilleur choix ?

On peut tout de même noter que visuellement, tkinter n'est pas très beau. Cela peut toutefois s'améliorer. Je fais cependant passer la "beauté" d'une interface après son utilité.

En attendant le prochain article qui parlera de l'installation de tkinter, voici quelques références à avoir sous le coude :

ps : blague pourrie générée avec GéGé

le 04/01/2017 à 20:45:10, scorpio810 a dit :

Bonjour,
j'attend la suite avec impatience. ;-)
Nous avons aussi expérimenté et adopté TkInter pour nos plugins python.
Fil roman sur nos expérimentations et comment installer notre plugin sur les différents OS du marché.

https://qelectrotech.org/forum/viewtopic.php?id=902

Quelques videos aussi sur notre chaine Youtube, exemple avec macOS:
https://youtu.be/g-3xzNvVbcs

le 04/01/2017 à 21:55:17, sogal a dit :

Salut, j'attends la suite avec impatience, je continue à doucement me former en python et il est clair que TK est parfait pour la réalisation d'interfaces simples.
Merci pour les références.

le 04/01/2017 à 22:19:52, Ordinosor a dit :

Salut,

Tout à fait d'accord avec cet article. J'ai commencé l'apprentissage du Python l'année dernière et très vite, j'ai utilisé Tkinter. J'ai pris beaucoup de plaisir à créer des petits programmes en interface graphique que j'ai partagés sur mon blog. Simple et dotée d'une documentation à jour, c'est la GUI idéale pour les débutants.

le 05/01/2017 à 06:09:01, Khertan a dit :

Si vous ne connaissez pas, j'apprécie particulièrement Kivy comme gui. Cross platform (mobile Android et iOS) compris.

Kivy.org

J'ai commencé aussi avec gtk, et la documentation est une horreur. Et le passage à gtk3 m'a définitivement convaincu de passer à autre chose.

le 05/01/2017 à 08:25:30, bobdinar a dit :

J'aime bien aussi Kivy mais pour une application de gestion c'est galère. Tu fais comment en Kivy une liste déroulante à part passer 3 jours à la mettre au point ?

Pour du développement rapide, j'utilise https://github.com/georgewalton/Sandals.

le 05/01/2017 à 08:29:14, Starsheep a dit :

C'est vrai que pygtk est une vraie horreur par sa documentation et ses dépréciations. Après c'est ce qui s'intègre le mieux graphiquement sur les bureaux Linux. Malheureusement.

Mais tu m'as motivé à proposer le 3hg-menu en Tk... ;) Le truc est qu'il faut assimiler une nouvelle lib...

le 05/01/2017 à 09:07:38, Khertan a dit :

@bobdinar :

J'évite de faire des listes déroulantes.

Et puis comme je fais des softs avec énormément de graph :)

le 05/01/2017 à 14:02:06, will_tam a dit :

Bonjour et merci pour ce blog.

J'utilise aussi beaucoup Tkinter, ça permet de faire un GUI assez rapidement, et finalement assez complet.
Et à peu de chose près, j'utilise les mêmes documentations.
Je trouve http://infohost.nmt.edu/tcc/help/pubs/tkinter/ un peu moins facile que http://effbot.org/tkinterbook dans la compréhension. Je les utilise en complément l'une de l'autre.

Si cela peut intéresser j'utilise aussi :
https://sites.google.com/a/pythonlake.com/djangoschool/python/tkinter

Ou les tuto/doc comme :
http://www.enib.fr/~nedelec/docs/poly/ihm_tkInter.pdf <<-- qui fait plus dans le tuto
http://sebsauvage.net/python/gui/index_fr.html <<-- Contruction d'un GUI en utilisant Tkinter ET wxPython
http://www.ferg.org/thinking_in_tkinter/languages/france/penser_en_tkinter.html

Très bonne continuation.

le 05/01/2017 à 14:33:36, Sabcat a dit :

http://vincent.developpez.com/cours-tutoriels/python/tkinter/apprendre-creer-interface-graphique-tkinter-python-3/

J'ai commencé avec ça. :)

le 06/01/2017 à 13:35:13, thuban a dit :

Quel enthousiasme ! Ça annonce des échanges intéressants lorsque je vais mettre ici des bouts de code :)

@starsheep : je l'avais fait viteuf avec le tkmenu qui utilisait le moteur du 3hg-menu. C'était sale par contre. Je suis sûr que tu pourras obtenir un truc sympa (en moins de lignes qu'avec pygtk :) )

le 06/01/2017 à 16:32:38, will_tam a dit :

L'utilisation de l'une ou l'autre des bibliothèques dépend de ce qu l'on veut faire de notre interface.

Je sais que je ne fais que des IHM "simples" (sans fioritures), donc Tk va très bien. Le jour où je veux une IHM un peu "fantaisiste", Tk seul ne suffira plus. Il semble que le couple Tk / PIL fonctionne bien pour ce genre de chose (rotation, changement taille (même si Tk sait le faire), ...).
Ou étendre Tk !

Qu'en est-il des autres bibliothèques, j'avoue ne pas savoir.

le 07/01/2017 à 07:53:32, Khertan a dit :

Le gros problème de Tk c'est qu'il n'est pas disponible sur les platformes mobiles :)