Programmation Python/Tkinter

Un livre de Wikilivres.
Aller à : navigation, rechercher
Programmation Python

Fichier:Python-logo-notext.svg

Partie 1 : Introduction
Partie 2 : Le langage
Partie 3 : Les bibliothèques
Annexe
Modifier ce modèle


Créer des interfaces python avec Tkinter[modifier | modifier le wikitexte]

Que faut il posséder d'abord ?[modifier | modifier le wikitexte]

Tkinter (pour Tool kit interface) est une boîte à outils d'interface graphique pour Python. L'interface Tkinter s'installe avec Python. Il suffit donc juste d'installer Python 2.3 ou 2.4 ou supérieur pour pouvoir utiliser Tkinter(Référence nécessaire).

Ensuite il vous suffit d'importer la bibliothèque dans votre programme  : from Tkinter import *

Principes de base[modifier | modifier le wikitexte]

Créez un fichier texte dans le dossier python 2.4 ou python 2.3.

Donnez lui le nom que vous voulez, mais pour que votre fichier puisse être interprété par python, il doit porter l'extension .py ou .pyw

Créez donc un fichier du type : monfichier.py (dans ce cas, la console s'affichera, ce qui peut être pratique pour suivre le fonctionnement du programme)

ou monfichier.pyw (dans ce cas la console ne s'ouvrira pas : c'est ce type d'extension qu'il faut utiliser pour la version définitive du programme).

Pour modifier le programme :

  • clic droit sur le fichier
  • ouvrir avec un logiciel d'édition de texte pur.

Quelques règles d'écriture[modifier | modifier le wikitexte]

Les espaces n'ont pas d'incidence sur le fonctionnement Les commentaires, précédés de #, permettent de donner des indications et des repères dans le programme, mais n'ont aucun effet sur le programme.

Créer une fenêtre pour l'application[modifier | modifier le wikitexte]

Propriétés et méthodes de l'objet fenêtre[modifier | modifier le wikitexte]

le programme est le suivant :

from tkinter import *   # le programme va aller chercher toutes les fonctions de la librairie Tkinter
Fenetre= Tk()           # vous pouvez choisir le nom que vous voulez pour votre fenêtre
Fenetre.mainloop()     # lance la boucle principale

Qu'est-ce qu'un widget ?[modifier | modifier le wikitexte]

widget : contraction de l'anglais windows gadget (gadget fenêtre). Les widgets sont tous les objets graphiques que l'on peut insérer dans une interface (fenêtre). Les principaux sont :

  • Les boutons : Button (pour commander une action)
  • Les labels : Label (pour insérer un texte)
  • Les zones de saisie : Entry (pour permettre l'entrée d'une donnée)
  • Les canevas : Canvas (pour insérer des dessins)

Chaque widget a des propriétés et des méthodes qui permettent de régler son apparence et les interactions avec l'utilisateur.

Le widget Button[modifier | modifier le wikitexte]

Chaque widget (objet d'interface) doit être créé puis placé dans la fenêtre

#!/usr/bin/python        # Emplacement de l’interpréteur Python (sous Linux)
# -*- coding: utf-8 -*-  # Définition l'encodage des caractères
from Tkinter import * # le programme va aller chercher toutes les fonctions de la librairie Tkinter
Fenetre= Tk() # création de la fenêtre, avec un nom de votre choix
bouton=Button(Fenetre, text="quitter", command=Fenetre.destroy) # Bouton qui détruit la fenêtre
bouton.pack()        # insère le bouton dans la fenêtre
Fenetre.mainloop()       # lance la boucle principale
  • La commande Fenetre.destroy() est une méthode de destruction qui s'applique à l'objet fen. La pression du bouton a donc pour conséquence la fermeture de la fenêtre Fenetre

propriétés et méthodes de l'objet "bouton"[modifier | modifier le wikitexte]

  • Ce qui sera affiché sur votre bouton est contenu dans la propriété "text", passée ici en paramètre de l'objet "bouton".
  • La procédure "command" permet une action lorsqu'on clique sur ce bouton. Cette procédure peut également être choisie parmi les fonctions définies dans le programme.

Le widget Label[modifier | modifier le wikitexte]

L'incontournable "Hello world"

#!/usr/bin/python        # Emplacement de l’interpréteur Python (sous Linux)
# -*- coding: utf-8 -*-  # Définition l'encodage des caractères
from Tkinter import *
Fenetre=Tk()
texte=Label(Fenetre, text="Hello World",fg='black')  # Création du texte "Hello World" de couleur noire
texte.pack() # Insère le texte dans la fenêtre
Fenetre.mainloop()

Propriétés et méthodes de l'objet label[modifier | modifier le wikitexte]

  • "fg" contient la couleur du texte (en anglais)
  • "bg" contient la couleur de fond du texte (en anglais)

Le widget Entry[modifier | modifier le wikitexte]

Propriétés et méthodes de l'objet Entry[modifier | modifier le wikitexte]

L'objet Entry() est une zone de saisie de texte que l'on crée de la manière suivante:

#!/usr/bin/python        # Emplacement de l’interpréteur Python (sous Linux)
# -*- coding: utf-8 -*-  # Définition l'encodage des caractères
from Tkinter import * #On importe l'ensemble du module Tkinter
Fenetre = Tk() 
Entree = Entry(Fenetre)     # On définit l'objet Entry qui porte le nom Entree
Entree.pack()               # On place "Entree"
Fenetre.mainloop()          # On lance la boucle du programme

Vous pouvez l'utiliser dans des situations plus complexes comme, par exemple, un formulaire que je vous laisserai examiner:

#!/usr/bin/python        # Emplacement de l’interpréteur Python (sous Linux)
# -*- coding: utf-8 -*-  # Définition l'encodage des caractères
from Tkinter import *
 
def repondre():
 affichage['text'] = reponse.get()	# lecture du contenu du widget "reponse"
 
Fenetre = Tk()
Fenetre.title('Mon nom')
 
nom = Label(Fenetre, text = 'Votre nom :')
reponse = Entry(Fenetre)
valeur = Button(Fenetre, text =' Valider', command=repondre)
affichage = Label(Fenetre, width=30)
votre_nom=Label(Fenetre, text='Votre nom est :')
nom.pack()
reponse.pack()
valeur.pack()
votre_nom.pack()
affichage.pack()
 
Fenetre.mainloop()

Le widget Canvas[modifier | modifier le wikitexte]

Le widget Canvas (canevas, en français) est une zone de dessin rectangulaire.

Notons que l'angle haut gauche du canevas est l'origine des coordonnées (x,y)=(0,0).

Un exemple d'utilisation :

#!/usr/bin/python        # Emplacement de l’interpréteur Python (sous Linux)
# -*- coding: utf-8 -*-  # Définition l'encodage des caractères
 
from Tkinter import *
 
racine= Tk()
 
zone_dessin = Canvas(racine, width=500, height=500) #Définit les dimensions du canevas
zone_dessin.pack() #Affiche le canevas
zone_dessin.create_line(0,0,500,500) #Dessine une ligne en diagonale
zone_dessin.create_rectangle(100,100,200,200) #dessine un rectangle
 
bouton_sortir = Button(racine,text="Sortir",command=racine.destroy)
bouton_sortir.pack()
 
racine.mainloop()

Quelques propriétés de l'objet Canvas[modifier | modifier le wikitexte]

Les propriétés sont définies en paramètre lors de la construction de l'objet

  • height : Hauteur Y du canvas
  • width  : Largeur X du canvas
  • bg  : Couleur de fond du canvas
  • bd  : Taille en pixels du bord du canvas (2 par défaut)
  • relief : Style de la bordure (flat (par défaut),raised,sunken,groove,ridge)
  • ...

Quelques méthodes du widget Canvas[modifier | modifier le wikitexte]

  • .create_arc(): Pour créer un arc de cercle
  • .create_bitmap(): Image bitmap
  • .create_image(): Image graphique
  • .create_line(): Pour créer une ligne
  • .create_oval(): Pour créer un cercle ou une ellipse
  • .create_polygon(): Pour créer un polygone
  • .create_rectangle(): Pour créer un rectangle
  • .create_text(): Texte
  • .create_window(): Une fenêtre rectangulaire

Exemple supplémentaire[modifier | modifier le wikitexte]

#!/usr/bin/python
# -*- coding: utf-8 -*-
 
from Tkinter import *
 
Fenetre=Tk()	#La fonction Tk() du module Tkinter permet de créer une fenêtre qui se nomme Fenetre
Fenetre.title("Mon programme avec Tkinter") # Donne un titre à la fenêtre (par défaut c'est Tk)
 
# Dans Fenetre nous allons créer un objet type Canvas qui se nomme zone_dessin
# Nous donnons des valeurs aux propriétés "width", "height", "bg", "bd", "relief"
zone_dessin = Canvas(Fenetre,width=500,height=500,
			            bg='yellow',bd=8,relief="ridge")
zone_dessin.pack() #Affiche le Canvas
 
#Nous allons maintenant utiliser quelques méthodes du widget "zone_dessin"
zone_dessin.create_line(0,0,500,500,fill='red',width=4) # Dessine une ligne
zone_dessin.create_line(0,500,500,0,fill='red',width=4) # Dessine une ligne
zone_dessin.create_rectangle(150,150,350,350) # Dessine un rectangle
zone_dessin.create_oval(150,150,350,350,fill='white',width=4) # Dessine un cercle
 
# boutons_sortir est un widget de type "Button"
# dont nous définissons les propriétés "text" et "command")
bouton_sortir= Button(Fenetre,text="Sortir",command=Fenetre.destroy)
# la commande "destroy" appliquée à la fenêtre détruit l'objet "Fenetre" et clôture le programme
bouton_sortir.pack()
 
Fenetre.mainloop() # Lancement de la boucle du programme, en attente d'événements (clavier, souris,...)

Images .gif[modifier | modifier le wikitexte]

#!/usr/bin/python
# -*- coding: utf-8 -*-
 
from tkinter import *
Fenetre=Tk()
photo=PhotoImage(file="Wikibooks.gif")
labl = Label(Fenetre, image=photo)
labl.pack()
Fenetre.mainloop()

Voir aussi[modifier | modifier le wikitexte]

  • PMW (Python megawidgets) pour ajouter des menus déroulants, cases à cocher et autres boites de dialogues.
  • PIL (Python Imaging Library) pour incruster des images.
  • py2.exe : pour créer des exécutables (limité à Python 2.6).
  • tkRAD: Tkinter XML widget builder : pour générer automatiquement des widgets Tkinter à partir d'un fichier source XML.
  • anglais Site officiel