[Python] : quelques minutes avec Tkinter (GUI)

Print Friendly, PDF & Email

Tkinter est un module graphique pour python, un GUI (Graphical User Interface). Bien sûr, cet article intéressera les débutants car il s’agit de découvrir le module le plus simplement possible mais avec un exemple “concret”. Je dis concret en double quotes car en fait ce n’est pas si utile que cela mais il faut bien avoir un but pour développer et écrire quelques lignes de codes.

Pour apprendre, je vous propose de réaliser un petit soft qui va avoir deux boutons (un pour quitter, l’autre pour lancer une action). L’action consistera à réaliser la liste des répertoires de ma home “~”. Et on affiche tout cela dans une fenêtre spécifique. Comme ceci :

file_manager

Nous utiliserons deux modules :

  • tkinter pour l’interface graphique
  • os : pour lister les répertoires au niveau de notre système
#!/usr/bin/python
#coding: UTF-8
import os
from Tkinter import *

def affichageRepertoires():
    path = os.path.expanduser("~/")
    for f in os.listdir(path):
        cadre2.insert(END, f + "\n")

if __name__ == '__main__':
    principale = Tk()
    cadre1 = LabelFrame(principale, text="FILE MANAGER", font="Arial 14")
    cadre1.grid(row=0, columnspan=2, sticky='E')

    Button(cadre1, text="Afficher répertoire", font="Arial 8", command=affichageRepertoires).grid(row=1, column=1)
    Button(cadre1, text="Quitter", font="Arial 8", command=principale.quit).grid(row=1, column=2)

    cadre2 = Text(master=principale)
    cadre2.grid(row=2, column=1, sticky=NW)
    
    cadre3 = Scrollbar(principale, orient=VERTICAL, command=cadre2.yview)
    cadre3.grid(row=2, column=2, rowspan=15, columnspan=1, sticky=NS)
    cadre2.config(yscrollcommand=cadre3.set, font=('Arial 8'))

    root.mainloop()

Les différentes lignes de codes permettent :

  1. codage en UTF8 (pour ne pas avoir de problème avec les accents)
  2. import des deux modules
  3. création d’une fonction  affichageRepertoires() :
    1. utilisation de os.path : pour récupérer les chemins
    2. parcourir la liste obtenue
    3. afficher les éléments dans le cadre 2 avec un renvoi à la ligne à chaque fois
  4. le bloc principal :
    1. création de la fenêtre principale
    2. définition du premier cadre de type Label (avec titre intégré)
    3. placement du cadre 1 aligné à droite dans la fenêtre et sur la première ligne d’une grille “imaginaire”
    4. ajout des deux boutons dans le cadre 1 avec le texte qui correspond et surtout la commande qui va avec. Pour le premier la commande lance notre fonction affichageRepertoires() pour le second elle quitte la fenêtre “principale”. Attention l’alignement se fait toujours sur notre grille mais en ligne n°1 et colonne 1 puis 2 en fonction du bouton.
    5. création du cadre 2 dans la fenêtre “principale”. Ce cadre sera alimenté par la fonction affichageRepertoires().
    6. la grille nous permet une fois de plus de placer notre cadre en ligne n°2/colonne n°1 et aligné en haut à gauche (NW : nord ouest)
    7. le cadre 3 consiste à ajouter la barre de défilement dans la fenêtre “principale” en se basant sur la fenêtre cadre 2 (command)
    8. Positionnement de cadre 3
    9. Configuration du cadre 2 avec la barre de défilement de cadre3
Découvrez  [Python] : le point sur les dictionnaires et ne pas confondre avec la liste

Tkinter pour python fait partie des modules très bien documentés. Vous pouvez consulter cette page en français et pour être plus complet cette page en anglais.