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
Remarque : Seul un membre de ce blog est autorisé à enregistrer un commentaire.