[Tutoriel] : Affichage des couleurs et leur noms avec Python et Tkinter


Dans ce billet on va explorer ensemble un exemple d'un programme crée avec Python en utilisant le module Tkinter (nommé aussi : Tk) qui est l'interface standard de la boite à outils Tk GUI de la langage de programmation Python .
Ce tutoriel consiste à créer un GUI permettant la saisie d'un couleur à afficher dans un rectangle. Les couleurs doivent êtres écrites comme suit : [Black, Brown, Red, Orange, Yellow, Green, Blue, Purple, Grey, White]. Le programme sera sensible aux majuscules et en cas de mauvaise saisie, un message d'erreur s'affichera et  indiquera qu'on doit appuyez sur la touche 'R' ou 'r' pour relancer la saisie.
Assez parler, voilà une présentation du programme (format .gif) et  le code documenté :



#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Auteur : Chiheb
# Licence : Free Licence

######### Affichage des couleurs + leurs noms ###########

class Application (object) :

   def __init__ (self) :
       "Constructeur de la fenêtre principale"
       # Initialisation de Tkinter()
       self.root = Tk()
       # Texte de la fenêtre principale
       self.root.title ('Affichage des couleurs')
       # Appel de la fontion dessineCadre() de la classe Application()
       self.dessineCadre()
       # Création d'un Label()
       Label(self.root,text = "Entrer le nom du couleur : ").grid(row=2,column=1,columnspan=3)
       # Création du premier boutton
       Button(self.root,text='Montrer',command = self.changeCouleur).grid(row=3,column=1)
       # Création du deuxième boutton
       Button(self.root,text='Quitter',command = self.root.quit).grid(row=3,column=3)
       # Création d'une espace de saisie de type Entry
       self.entree = Entry(self.root,width=14)
       self.entree.grid(row=3,column=2)
       # Listes des couleurs
       self.cc = ['Black','Brown','Red','Orange','Yellow','Green','Blue','Purple','Grey','White']
       # Boucle pincipale

       self.root.mainloop()

   def dessineCadre (self) :

       "Canvas avec un text box au milieu indiquant la couleur"
       # Création du Canvas de l'instance self.root avec une largeur = 250, hauteur = 100
       # et couleur de l'arière plan = ivory
       self.can = Canvas(self.root,width= 250, height = 100, bg='ivory')
       # Le Vanvas crée possède une seule ligne (row=1) et une seule colonne (column=1)
       # L'espacement de la colonne est de l'ordre de 3
       # padx = Remplissage facultatif autour d'une widget dans une cellule
       # pady = Sa valeur par défaut est 1
       self.can.grid(row=1,column=1,columnspan=3,pady=5,padx=5)
       # Création d'un rectangle
       self.can.create_rectangle(65,30,185,70,fill='light grey',width=2)  

   def changeCouleur(self) :
       "Changer la couleur du fond du rectangle"
       text_id = None
       # Utilisation de la méthode get() pour reçevoir les données par l'utilisateur
       self.ch = self.entree.get()
       # Affichage facultatif
       print("Vous avez saisie : ",self.ch)
       # Appuyer sur 'R' ou 'r' renouvelle la fenêtre de la saisie
       if self.ch.upper() =='R' :
       self.videEntree()
       if self.ch in self.cc :
       #Création du rectangle aux positions : 65,30,185,70 de l'écran
      self.can.itemconfigure(self.can.create_rectangle(65,30,185,70,fill=self.ch,width=2))   
       # Création du texte
       text_id = self.can.create_text(130,50,anchor = "center")
       # Configuration du contenu du texte
       self.can.itemconfig(text_id,text=self.ch)
       # Insertion du texte avec une police = 12
       self.can.insert(text_id,12,"")
       else :
       # Création d'un Cavnas item, un text plus précisement pour l'erreur
       # Recréation de du Vavnas en mettant la couleur par défaut = white

       self.can.itemconfigure(self.can.create_rectangle(65,30,185,70,fill='white',width=2))
       text_id = self.can.create_text(130,50,anchor = "center")
       # Message d'erreur en cas de mauvaise saisie
       self.can.itemconfig(text_id,text="  ERREUR\n(R)enouveller")
       self.can.insert(text_id,12,"")
       if self.ch.upper() =='R' :
           # Message facultatif
           print("Renouvellement de la fenêtre de la saisie")
       else :
           # Message facultatif
           print('"{}" n\'est pas inclus dans la liste des couleurs'.format(self.ch))

   def videEntree(self) :
       "Rétablir le fond blanc et enlever les caractères saisies"
       # Mettre le fond de la fenêtre de la saisie en blanc
       self.entree.configure(bg='white')
       # Vider le champs de la saisie
       self.entree.delete(0,len(self.ch))

 ################# Programme principal #################

if __name__ == '__main__' :
    from tkinter import *
    f = Application()


Vous pouvez télécharger le code source directement via : Google Drive 

Enregistrer un commentaire