Pygubu
est un logiciel RAD pour développer rapidement et facilement des interfaces utilisateur avec le module tkinter
en Python.
Les interfaces utilisateur conçues sont sauvées au format XML, et grâce à l'utilisation du constructeur pygubu, elles peuvent être chargées dynamiquement par les applications, si nécessaire.
Pygubu est inspiré de Glade.
Pygubu requiert Python >= 2.7 (Testé seulement avec Python 2.7.3, 3.2.3 avec tk8.5).
Vous pouvez installer pygubu par :
Téléchargez et décompressez l'archive. Ouvrez un terminal, dirigez-vous vers le répertoire d'extraction puis exécutez :
python setup.py install
pip install pygubu
Notez que si vous utilisez Python 3, vous pouvez utiliser son propre outil pip
, par exemple :
pip3.5 install pygubu
Dans le cas précédent, j'utilise l'outil pip
de Python 3.5
Pour vérifier le succès de l'installation, vous pouvez essayer d'importer pygubu
- par exemple depuis IDLE
import pygubu
Si vous n'avez pas d'erreur ImportError
, alors votre installation s'est faite avec succès.
Écrivez dans un terminal la commande suivante, selon votre système
pygubu-designer
C:\Python34\Scripts\pygubu-designer.exe
Où C:\Python34
est le chemin de votre répertoire d'installation de Python.
Note : pour les versions antérieures à 0.9.8, l'exécutable était nommé pygubu-designer.bat
Ensuite, l'application pygubu-designer devrait apparaître, telle quelle :
Maintenant, vous pouvez commancer à créer votre application tkinter en utilisant les widgets que vous trouverez dans le panneau de gauche, appelé Widget List
.
Après que vous ayez terminé de créer votre interface UI, sauvegardez-la en tant que fichier .ui
par l'usage du menu File > Save
.
Ce qui suit est un exemple d'interface UI, appelé helloworld.ui, créé en utilisant pygubu :
<?xml version='1.0' encoding='utf-8'?>
<interface>
<object class="ttk.Frame" id="mainwindow">
<property name="height">200</property>
<property name="padding">20</property>
<property name="width">200</property>
<layout>
<property name="column">0</property>
<property name="propagate">True</property>
<property name="row">0</property>
<property name="sticky">nesw</property>
</layout>
<child>
<object class="ttk.Label" id="label1">
<property name="anchor">center</property>
<property name="font">Helvetica 26</property>
<property name="foreground">#0000b8</property>
<property name="text" translatable="yes">Hello World !</property>
<layout>
<property name="column">0</property>
<property name="propagate">True</property>
<property name="row">0</property>
</layout>
</object>
</child>
</object>
</interface>
Ensuite, vous devez créer votre script d'application, tel que ci-dessous :
#test.py
try:
import tkinter as tk # for python 3
except:
import Tkinter as tk # for python 2
import pygubu
class Application:
def __init__(self, master):
#1: Create a builder
self.builder = builder = pygubu.Builder()
#2: Load an ui file
builder.add_from_file('helloworld.ui')
#3: Create the widget using a master as parent
self.mainwindow = builder.get_object('mainwindow', master)
if __name__ == '__main__':
root = tk.Tk()
app = Application(root)
root.mainloop()
Notez l'ajout de helloworld.ui
dans la ligne suivante :
builder.add_from_file('helloworld.ui')
Vous devez insérer le nom du fichier (ou son chemin).
Notez aussi l'ajout de 'mainwindow'
dans la ligne suivante :
self.mainwindow = builder.get_object('mainwindow', master)
Vous devez avoir le nom de votre widget main (le parent de tous les widgets), sinon vous obtiendrez l'erreur similaire :
Exception: Widget not defined.
See this issue for more information.
Visitez le wiki pygubu pour consulter la documentation.
Voici quelques bonnes références de tkinter (et tk) :
- TkDocs
- Graphical User Interfaces with Tk
- Tkinter 8.5 reference: a GUI for Python
- An Introduction to Tkinter
- Tcl/Tk 8.5 Manual
Vous pouvez aussi voir le répertoire examples ou regarder ce tutoriel d'introduction en vidéo.
Consultez la liste des changements ici.