Commencer avec Tkinter

1 – Introduction

Tkinter est un module du langage Python, il est utilisé pour créer des interfaces graphiques. Il existe d’autres manières de faire des interfaces graphiques en Python (Utilisation de Qt par exemple), Cependant, Tkinter reste la bibliothèque la plus connue et la plus utilisée.

Le module « tkinter » est installé avec python, donc pas besoin de l’installer.

2 – Création d’une fenêtre basique

Une fenêtre graphique en « Tkinter » est une objet de type classe « Tk ». Cette classe est définie dans le module python qui s’appelle « tkinter ».

Il existe principalement trois manières pour créer une fenêtre graphique avec tkinter :

2.1 – Approche simple

J’ai appelé la première approche « approche simple » car elle nécessite pas des connaissance en programmation orientée objet python.

Avec cette approche tous les composants graphiques y compris notre fenêtre seront des variables « éparpillées » dans le programme.
Voici le code python pour la création d’une fenêtre basique :

#!/usr/bin/env python3
import tkinter as tk
Fenetre = tk.Tk()
# ... Ajouter des composants graphiques
Fenetre.mainloop()

Le code précédent affiche une fenêtre graphique vide : Aucun composant graphique dessus. Pour y ajouter des widgets, il faut les mettre dans la partie commentaire (avant dernière ligne).

Figure 1: Première fenêtre avec tkinter

2.2 – Approche par composition

La deuxième approche consiste à définir une classe, « Fenetre » par exemple, composée d’un objet de type classe « Tk ». La classe « Fenetre » possédera des attributs qui représenteront tous les composants graphiques de la fenêtre.

Le diagramme de classes UML qui correspond à cette approche est donné dans le figure suivante :

Figures 2 : Diagramme UML de composition

Voici un exemple de code qui permet de créer une fenêtre vide en utilisant l’approche par composition :

import tkinter as tk
class Fenetre:
def __init__(self):
f = tk.Tk()
# ... Ajouter des composants graphiques comme des attributs

f = Fenetre()
f.f.mainloop()

Le code précédent affiche une fenêtre vide comme celle de la figure 1.

2.3 – Approche par héritage

La troisième approche consiste à définir une classe, « Fenetre » par exemple, qui hérite de la classe « Tk ». Ainsi, la classe « Fenetre » va contenir tous ses composants graphiques comme des attributs.

La figure suivante montre le diagramme UML qui correspond à l’approche par héritage.

Figure 3 : Diagramme UML d’héritage

L’exemple ci-dessous permet de créer une fenêtre vide en utilisant l’approche par héritage :

import tkinter as tk
class Fenetre(tk.Tk):
  def __init__(self):
  tk.Tk.__init__(self)
# ... Ajouter des composants graphiques comme des attributs

f = Fenetre()
f.mainloop()

Le résultat est le même que celui montré dans figure 1.

3 – Conclusion

Parmi les trois approches présentées plus haut, il est toujours préféré d’opter pour la troisième approche surtout quand il s’agit de projets de grandes tailles. En effet, le code est mieux organisé et donc facile maintenir et à évoluer.

La première approche est adapté pour des programmes simples et/ou de petites tailles.

Premiers pas en Python

1 – Introduction

Si vous n’avez encore installer python, je vous conseille d’installer la dernière version qui, à ce jour, est python 3.8.1. Pour cela, vous pouvez suivre les étapes décrites dans un précédent article que vous pouvez trouver ici.

Vous savez sûrement que python est un langage interprété et non compilé. C’est-à-dire l’interpréteur python ne génère pas d’exécutable, il analyse le code ligne par ligne puis les exécute.

Autre particularité de Python, c’est le typage dynamique. En effet, pour utiliser une variable, on n’a pas besoin de déclarer son type. Au moment de la première affectation, python détecte le type de la valeur affectée. Puis, cette même variable peut changer de type si on lui affecte une valeur d’un autre type.

2 – Premier programme : « hello world »

Pour écrire un premier programme python sous linux, il faut créer un ficher texte qui s’appelle « hello-world.py » par exemple.

nano hello-world.py

Ensuite, il faut écrire le code suivant :

#!/usr/bin/env python3
print('Hello world')

<ctrl>+O pour sauvegarder. <ctrl>+X pour quitter  

Pour exécuter le programme, il y a deux manière. La première technique consiste à rendre le fichier exécutable et le lancer directement.

chmod +x hello-world.py
./hello-world

La deuxième manière, consiste à donner le fichier comme argument au programme python3.8.

python3.8 hello-world.py

3 – Interagir avec le shell python

Le site officiel met à votre disposition un shell python interactif pour découvrir le langage de programmation python. Mais pour ceux d’entre vous qui l’avez installé sur vos machines, Vous pouvez lancer le shell python en ouvrant un terminal linux, puis taper la commande :

python3.8

Si vous l’avez bien installé, normalement vous aurez quelque chose qui ressemble à ça :

Python 3.8.1 (default, Dec 21 2019, 19:58:48)
[GCC 8.3.0] on linux
Type « help », « copyright », « credits » or « license » for more information.
>>>

Les trois chevrons « >>> » indique que le shell python attend que vous entriez une instruction qu’il va exécuter pour vous.
Vous pouvez par exemple taper :

>>> print('hello-world')

La fonction « print » affiche ce qu’on lui donne en argument. C’est-à-dire, ici, elle affiche « hello-world ».

Autre instruction que vous pouvez essayer :

>>> a = 1
>>> b = 'Bonjour'
>>> pi = 3.14
>>> 1 + 1
2
>>> 9 * 9
81
>>>

Dans l’exemple précédent, on a défini des variables « a », « b », et « pi » qui valent respectivement « 1 », « ‘Bonjour' », et « 3.14 ».
On a utilisé également le shell python comme une calculatrice pour calculer la somme « 1+1 » et le produit « 9*9 ».

Pour quitter le shell, vous avez juste à écrire l’une de ces deux instructions :

>>> quit()

ou

>>> exit()

Et là vous revenez au terminal linux.

Installation Python 3.8 sous Debian / Ubuntu

1 – Introduction

Python est un langage de script orienté objet développé en début des années 1990. La version 3.8 est sortie le 14 octobre 2019. Une mise-à-jour Python 3.8.1 est sortie en décembre 2019.

Python3.8 vient avec quelques nouveautés par rapport à la version précédente 3.7. pour plus de détails, je vous conseille la documentation du site officiel ici.

Par ailleurs, « Python Software Foundation » annonce qu’elle mettra fin au support de la version Python 2 à partir du 1er janvier 2020. Par conséquent, il ne reste que quelques jours pour passer à la Python 3.

2 – Préparation

Avant de commencer l’installation de python 3.8, il est nécessaire d’installer certains paquets qui seront utilisés lors de l’installation de Python. Sur l’invite de commande taper les commandes :

sudo apt-get install build-essential checkinstall

sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev

3 – Téléchargement

Il vous faudra télécharger le code source de python. Je vous conseille de prendre la version la plus récente à ce jour c-à-d python 3.8.1. Pour celà il faut exécuter la commande :

cd /opt
wget https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz

Ces commandes téléchargent le ficher « .tgz » contenant le code source python dans le répertoire « /opt »

4 – Installation

4.1 – Extraction

Afin d’extraire les fichier qui se trouve dans le ficher archive, il faut exécuter la commande :

sudo tar xzf Python-3.8.1.tgz
cd Python-3.8.1

4.2 – Installation

sudo ./configure --enable-optimizations
sudo make altinstall

5 – Vérification

Taper la commande suivante sur un terminal :

python3.8 -V

Si tout s’est bien passé, le résultat qui s’affiche est :

Python 3.8.1

Le chemin complet de l’exécutable est « /usr/bin/python3.8 »

Maintenant que l’installation s’est bien terminée, vous pouvez supprimer le fichier « .tgz » que vous avez téléchargé.

rm -f /opt/Python3.8.1.tgz