Programmation Python/wxFormBuilder
wxpython avec wxFormBuilder (Python 3.13.2, wxPython 4.2.2 wxFormBuilder 4.2.1)
[modifier | modifier le wikicode]Notes (temporaires) de Musclor13
Page créé suite a un manque d'infos en francais et un bel échange sur https://discuss.afpy.org/t/probleme-wxformbuilder-wxpython-et-print/2544 Des erreurs possibles car je débute en GUI. Page en cours de création.
Après avoir créé pleins de petits modules qui deviennent des grand modules puis des programmes en ligne de commande on a parfois envie de rendre le tout plus joli et plus accessible avec des fenêtres, des barres d'outils et des menus et cases a cocher en tout genre... Malheureusement il faut tout faire a la main et pour débuter devoir écrire pleins de lignes de codes juste pour une boite de dialogue... Ca peu faire peur ou démotiver... Quel dommage qu'il n'y ai pas d'applications de dessins comme LibreOffice Draw, Inkscape ou Adobe Illustrator mais ou on remplacerait les elipses et autres flèches de diagrammes par des barres, boutons, champs de textes et palettes de couleurs?...
Visiblement c'est ce que certains développeurs ont du se dire alors ils ont créé ces fameux outils de "dessin" (et oui, ils y en a plusieurs!):
Ces outils sont généralement fait pour créer automatiquement le code correspondant a l'affichage des fenêtres dans des bibliothèques (QT, GTK wx...) et des langages de programmations divers (C++, Java, Python...). Il existe même des moteurs de jeux comme Godot qui permettent de dessiner ses fenêtre et boutons pour n'avoir plus qu'a coder le gameplay en Gdscript.
Une de ces applications s'appelle XxFormBuilder. Elle permet de dessiner ses interfaces graphique puis d'exporter le tout dans plusieurs langages y compris le C++... Vous suivez?... Bien sur le Python est supporté également et ici on code en python (enfin normalement).
Cette application ainsi que la bibliothèque sont compatible avec Windows Linux et mac. Malheureusement pas de portage Android ou IOS a l'heure actuelle. Si vous souhaitez créer des applications pour votre smartphone il faudra trouver une autre bibliothèque graphique mais si c'est pour ordinateurs allez-y! Surtout que la bibliothèque fonctionne pareille sur l'OS du voisin même si c'est pas le même que le votre (enfin sauf si il a Windows98 et dans ce cas Python ne marchera même pas).
Bien sur il ne faudra pas jeter son éditeur de code. L'application ne fait pas tout a votre place. Ne jetez pas non plus votre machine a café car cette application ne vous servira pas d'expresso. Et surtout ne jetez pas votre chien ou votre chat car... Il aimerait pas (le chien ou le chat, pas l'application).
Il faut installer quoi?
[modifier | modifier le wikicode]- Python (oui-oui) en version 3 (la version 3.13.2 est utilisé ici)
- wxPython (ici c'est la version 4.2.2)
- wxFormBuilder (les tests pour ce tutoriel ont été réalisés avec la version 4.2.1)
L'installation
[modifier | modifier le wikicode]Normalement python est déjà installé sur votre ordinateur donc on ne s'attarde pas là-dessus.
wxPython
[modifier | modifier le wikicode]SI on regarde le site officiel a la page des téléchargements...
https://wxpython.org/pages/downloads/
...On a toutes les informations qu'il faut.
Sous windows et mac il suffit d'utiliser PIP (pas de tuto sur PIP sur ce livre?):
pip install -U wxPython
Sous linux c'est différent donc regardez la page en lien ci-dessus
wxFormBuilder
[modifier | modifier le wikicode]La c'est comme pour n'importe quel applications (sous windows en tout cas).
Il faut télécharger la version qui correspond a son système sur
https://github.com/wxFormBuilder/wxFormBuilder/releases ATTENTION: le projet a encore les reste d'une page sur Sourceforge mais il a été déplacé sur GitHub vers 2015 donc si vous ne trouvez pas la version 4.2.1 ou plus c'est que vous vous êtes trompé de site.
Les bases sans codage ni scripts
[modifier | modifier le wikicode]Une fois l'application installez lancez-la. En plus elle a été faite en wxWidgets donc en théorie vous pourriez la recopier.
L'interface graphique
[modifier | modifier le wikicode]Quand on ouvre l'application on a:
- Une barre de menu et d'outils en haut
- Un panneau "Object Tree" a gauche avec une racine "MyProject1 : Project"
- Un "éditeur" au milieux avec deux barres d'outils juste au dessus: "Editor" avec Designer selectionné et "Component Palette" Normalement c'est un gros rectangle gris.
- A droite on a le panneau "Object Properties" avec 2 boutons tout en haut: Properties qui est normalement déja selectionné et Event. Au milieux on a tout un tas de réglages que l'on peu faire avec une souris et en bas un espace vide qui affich une aide en anglais dés qu'on clic sur un de ces réglages.
Vous pouvez toujours échanger l'emplacement de "'éditeur" et la barre "Object propretés" dans le menu View.
Du coté de "Component Palette" si vous cliquez sur un dés boutons de la deuxième ligne vous pouvez dessiner votre fenêtre... Ou pas car bizarrement y a un message d'erreur. Si vous avez déja utilisé Tkinter ou une autre bibliothèque d'interface graphique vous savez déjà pourquoi. Mais si vous débutez alors...
Apprenez les base du dessin d'interfaces graphiques
[modifier | modifier le wikicode]Run.py
import wx
import wx.xrc
import genwx
class MaFenetre(genwx.Fenetre):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
combien_de_clics = 0
def clicsurlebouton(self, event):
print("clic sur le bouton")
combien_de_clics += 1
app = wx.App()
MaFenetre(None).Show()
print("avant MainLoop")
app.MainLoop()
print(f"apres MainLoop et {MaFenetre.combien_de_clics} clics")