URL: https://linuxfr.org/news/pysimplegui-prenez-plaisir-a-faire-des-interfaces-graphiques-en-python Title: PySimpleGUI : prenez plaisir à faire des interfaces graphiques en Python Authors: Papey Date: 2021-01-29T17:15:30+01:00 License: CC By-SA Tags: python, python3, pysimplegui et interface_graphique Score: 4 Je cherchais depuis longtemps un moyen simple de créer des interfaces graphiques pas trop compliquées pour mes scripts Python. Les approches objet et/ou à base de langages dédiés (sur base XML par exemple) m'avaient plutôt rebutées jusqu'à présent, et malheureusement celles-ci sont ultra majoritaires. J'avais eu du mal à rentrer dans tkinter ou pyQT par exemple, et à les utiliser de manière efficace. C'est alors que j'ai découvert, récemment, PySimpleGUI, et que j'ai enfin réussi à être productif en matière d'interface graphique en Python ! PySimpleGUI est sous licence MIT. ---- [Manuel PySimpleGUI](https://pysimplegui.readthedocs.io/en/latest/) ["Cookbook" (livre de recettes)](https://pysimplegui.readthedocs.io/en/latest/cookbook/) ---- Les concepts de base de PySimpleGUI sont les suivants : * on déclare les différentes parties de son interface graphique sous forme de listes imbriquées d'éléments graphiques. La liste extérieure représente les lignes d'éléments graphiques à afficher à l'écran de haut en bas. Au sein de chaque ligne, les éléments sont également rangés de gauche à droite au sein d'une liste. Ainsi, pour un écran avec une ligne de texte, puis une autre ligne juste en dessous avec une invite et un bouton, on peut déclarer la disposition comme suit : `ma_disposition = [[sg.T("Mon texte")], [sg.In("ce texte est modifiable"), sg.B("Cliquez sur ce bouton")]]`. * on attribue à chaque élément avec lequel on souhaite interagir un identifiant sous forme de chaîne de caractère (par exemple `"-MON-ELEMENT-"`). Cet identifiant deviendra une clé utilisée dans les situations présentées ci-dessous. Dans notre exemple simple, l'ajout de cette clé se fait comme suit : `ma_disposition = [[sg.T("Mon texte")], [sg.In("ce texte est modifiable", key="-MON-INVITE-"), sg.B("Cliquez sur ce bouton", key="-MON-BOUTON-")]]` * lorsque l'élément en question déclenche un événement, l'événement porte le même identifiant que l'élément qui l'a émis (ex : `"-MON-ELEMENT-"`). * Les valeurs associées à l'événement (nouvelle position pour un curseur par exemple, ou lignes sélectionnées dans une table), ainsi que celles associés à tous les autres éléments actifs à cet instant à l'écran sont transmises en même temps que chaque événement dans un dictionnaire nommé "values" : `values["-MON-INVITE-"]` contiendra par exemple le texte saisi par l'utilisateur dans le champ texte présenté plus haut. * la mise à jour des données associées à un élément se fait via la syntaxe suivante : `window["-MON-ELEMENT-"].update("ma nouvelle valeur")` Et c'est à peu près tout ce qu'il faut savoir pour créer des interfaces graphiques grâce à PySimpeGUI ! Des options supplémentaires sont disponibles pour modifier le positionnement par défaut des différents éléments, leur comportement, leur apparence... Cette approche très simple des interfaces graphiques m'ont personnellement permis de mettre très vite sur pied (quelques heures) une fenêtre avec plusieurs onglets permettant d'interagir plus facilement avec une base SQLite : chargements de fichiers excel, affichage de tables... N'hésitez pas à consulter les exemples présents dans le cookbook par exemple. Bonne conception graphique !