Tuto Python & Tkinter : réaliser un formulaire d'inscription

Table des matières

Introduction

  1. Importer le module Tkinter
  2. Créer la fenêtre principale
  3. Ajouter des widgets au formulaire

3.1. Label

3.2. Entry

3.3. Button

3.4. Radiobutton & checkbutton

3.5. Listbox

3.6. Messagebox

  1. Méthode grid()

Conclusion

Introduction

Un formulaire en informatique est tout d’abord un espace de saisie pour l’utilisateur qui contient plusieurs champs permettant par exemple de saisir du texte, de choisir un élément d’une liste de termes prédéfinie, de cocher une case (ou plusieurs), d’appuyer sur des boutons, etc. Ceci est dans le but d’assurer l’interactivité entre le client et le serveur.

Pour le présent tutoriel nous allons s’intéresser à la création d’un formulaire en utilisant le module Tkinter (TK interface) qui permet le développement des interfaces graphiques c’est-à-dire d’afficher les commandes d’un logiciel comme les menus, les boutons, etc. sans avoir à saisir des lignes de commandes.

Nous allons procéder ainsi :

  1. Importer le module Tkinter.
  2. Créer la fenêtre principale qui contiendra le formulaire.
  3. Ajouter des widgets au formulaire.
  4. Ajouter la boucle d’événement principal.

Alors notre code contiendra 4 parties essentielles.

1. Importer le module Tkinter

A travers une simple commande on peut importer ce module :

2. Créer la fenêtre principale

Afin de créer notre interface graphique avec Tkinter il faut tout d’abord créer la fenêtre principale et ensuite lancer la boucle principale en faisant appel à la méthode mainloop(). Celle-ci affiche dans un premier temps la fenêtre principale et attend des événements déclenchés par l’utilisateur.

Exemple :

  • Code :

fenetrePrincipale = Tk()
fenetrePrincipale.mainloop()

  • Résultat de l’exécution :

3. Ajouter des widgets au formulaire

Le module Tkinter offre divers contrôles appelés widgets. C’est tout simplement les boutons, les étiquettes et les zones de texte utilisés dans une application graphique.

Dans Tkinter, il existe, au moment de la rédaction de ce tutoriel, 15 types de widgets, nous présenterons au fur et à mur qu’on avance dans ce tutoriel ceux utiles pour la réalisation du formulaire d’inscription.

3.1. Label

Le widget Label permet de fournir une légende pour les autres widgets.

Syntaxe :

NomLabel = Label ( NomFenêtre , text ="Texte du label")

Exemple :

  • Code :

fenetrePrincipale = Tk()
l = Label(fenetrePrincipale, text = "Nom")
l.pack()
fenetrePrincipale.mainloop()

  • Résultat de l’exécution :

Remarque :

La méthode pack() permet d’ajouter le widget à la fenêtre.

3.2. Entry

Le widget Entry affiche un champ de texte d’une seule ligne destiné à accepter les entrées de l’utilisateur.

Syntaxe :

NomChamp = Entry ( NomFenêtre , options )

On cite ci-après quelques options pour le widget Entry :

bg : couleur d’arrière-plan du champ texte.

fg : couleur du texte

bd : taille des bordures.

command : définit et associe une commande.

font : police utilisée pour le texte.

Exemple :

  • Code :

fenetrePrincipale = Tk()
l = Label(fenetrePrincipale, text = "Nom et prénom")
e = Entry(fenetrePrincipale)
l.pack()
e.pack()
fenetrePrincipale.mainloop()

  • Résultat de l’exécution :

3.3. Button

Pour créer un bouton permettant de faire une action une fois on clique dessus, on fait appel au widget Button.

Syntaxe :

NomBouton = Button( NomFenêtre , text =”Texte du bouton” , command = actionBouton() )

Exemple :

Le bouton dans cet exemple ne fait aucune action.

  • Code :

fenetrePrincipale = Tk()
l = Label(fenetrePrincipale, text = "Nom et prénom")
e = Entry(fenetrePrincipale)
b = Button(fenetrePrincipale ,text="Submit")
l.pack()
e.pack()
b.pack()
fenetrePrincipale.mainloop()

  • Résultat de l’exécution :

3.4. Radiobutton & checkbutton

Le widget Radiobutton permet d’afficher un certain nombre d’options mais de ne sélectionner qu’une seule.

Syntaxe :

NomBouton = Radiobutton( NomFenêtre , text =”Texte” , value = 'valeurBouton' )

Le widget checkbutton quand à lui, permet d’afficher un certain nombre d’options et de sélectionner plusieurs choix de ces options.

Syntaxe :

nomBouton = Checkbutton (nomFenetre, text = "texteBouton", variable = 'variableBouton')

Exemple :

  • Code :

fenetrePrincipale = Tk()
l = Label(fenetrePrincipale, text = "Nom et prénom")
e = Entry(fenetrePrincipale)
b = Button(fenetrePrincipale ,text="Submit")
rb1 = Radiobutton(fenetrePrincipale, text = "Feminin", value = '1')
rb2 = Radiobutton(fenetrePrincipale, text = "Masculin", value = '2')
c1 = Checkbutton (fenetrePrincipale, text = "art", variable = '1')
c2 = Checkbutton (fenetrePrincipale, text = "science", variable = '2')
c3 = Checkbutton (fenetrePrincipale, text = "litterature", variable = '3')
l.pack()
e.pack()
rb1.pack()
rb2.pack()
c1.pack()
c2.pack()
c3.pack()
b.pack()
fenetrePrincipale.mainloop()

  • Résultat de l’exécution :

3.5. Listbox

Ce widget Listbox permet d’afficher à l’utilisateur une liste d’options.

Syntaxe :

NomListBox = Listbox( NomFenêtre , option )
insert ( index, "element de la liste" )

On retrouve  bg, bd, font, etc. comme option ce qui est similaire au widget Entry.

Exemple :

  • Code :

enetrePrincipale = Tk()
l = Label(fenetrePrincipale, text = "Nom et prénom")
e = Entry(fenetrePrincipale)
b = Button(fenetrePrincipale ,text="Submit")
rb1 = Radiobutton(fenetrePrincipale, text = "Feminin", value = '1')
rb2 = Radiobutton(fenetrePrincipale, text = "Masculin", value = '2')
lb = Listbox(fenetrePrincipale)
lb.insert(0, 'Asie')
lb.insert(1, 'Afrique')
lb.insert(2, 'Amérique')
lb.insert(3, 'Europe')
l.pack()
e.pack()
rb1.pack()
rb2.pack()
lb.pack()
b.pack()
fenetrePrincipale.mainloop()

  • Résultat de l’exécution :

3.6. Messagebox

Messagebox est un module de Tkinter permettant d’afficher des boites de messages.

Syntaxe :

messageBox.NomFonction("titre de la boite de dialogue", "message contenu dans la boite")

Liste  des fonctions possibles avec la boite de messages:

  • showinfo()
  • showwarning()
  • showerror ()
  • askquestion()
  • askokcancel()
  • askyesno ()
  • askretrycancel ()

 Exemple :

Dans cet exemple on va ajouter au code précédent une fonction formulaireEnvoyé qui lors de son appel affiche un message informatif.

On appelle cette fonction à l’aide du bouton submit qu’on a précédemment créé.

  • Code :

enetrePrincipale = Tk()
l = Label(fenetrePrincipale, text = "Nom et prénom")
e = Entry(fenetrePrincipale)
b = Button(fenetrePrincipale ,text="Submit")
rb1 = Radiobutton(fenetrePrincipale, text = "Feminin", value = '1')
rb2 = Radiobutton(fenetrePrincipale, text = "Masculin", value = '2')
lb = Listbox(fenetrePrincipale)
lb.insert(0, 'Asie')
lb.insert(1, 'Afrique')
lb.insert(2, 'Amérique')
lb.insert(3, 'Europe')
l.pack()
e.pack()
rb1.pack()
rb2.pack()
lb.pack()
b.pack()
fenetrePrincipale.mainloop()

  • Résultat de l’exécution :

4. Méthode grid()

La méthode grid() est un gestionnaire de disposition géométrique qui concrètement organise dans la fenêtre les widgets dans une structure de type table.

Mettons un peu d’ordre dans notre formulaire.

  • Code :

from tkinter import messagebox
fenetrePrincipale = Tk()
l1 = Label(fenetrePrincipale, text = "Nom et prénom").grid(row = 0, column = 0)
l2 = Label(fenetrePrincipale, text = "Age").grid(row = 1, column = 0)
l3 = Label(fenetrePrincipale, text = "Sex").grid(row = 2, column = 0)
l3 = Label(fenetrePrincipale, text = "Continent").grid(row = 3, column = 0)
l3 = Label(fenetrePrincipale, text = "Centre d'interet").grid(row = 4, column = 0)
e1 = Entry(fenetrePrincipale).grid(row = 0, column = 1)
e2 = Entry(fenetrePrincipale).grid(row = 1, column = 1)
rb1 = Radiobutton(fenetrePrincipale, text = "Feminin", value = '1').grid(row = 2, column = 1)
rb2 = Radiobutton(fenetrePrincipale, text = "Masculin", value = '2').grid(row = 2, column = 2)
c1 = Checkbutton (fenetrePrincipale, text = "art", variable = '1').grid(row = 4, column = 1)
c2 = Checkbutton (fenetrePrincipale, text = "science", variable = '2').grid(row = 4, column = 2)
c3 = Checkbutton (fenetrePrincipale, text = "litterature", variable = '3').grid(row = 4, column = 3)
lb = Listbox(fenetrePrincipale)
lb.insert(0, 'Asie')
lb.insert(1, 'Afrique')
lb.insert(2, 'Amérique')
lb.insert(3, 'Europe')
lb.grid(row = 3, column = 1)
def formulaireEnvoyé():
messagebox.showinfo("Statut de l'inscription", "Formulaire Envoyé")
b = Button(fenetrePrincipale ,text="Submit", command = formulaireEnvoyé).grid(row = 5, column = 1)
fenetrePrincipale.mainloop()

  • Résultat de l’exécution :

Conclusion

Lors de ce tutoriel nous avons vu comment créer une fenêtre Tkinter, puis comment lui implémenter des widgets, c’est-à-dire les zones de texte, les labels, les boutons, etc. Afin de constituer un formulaire.

Télécharger le code source de l'application

Article publié le 23 Octobre 2020par Imane BENHMIDOU