# Programmation Python/Tkinter
## Partie 1 - Introduction

* Avant-propos à l'attention des non-programmeurs
* Introduction
* Installation
* Éditeurs
* Programmer en deux minutes
** une messagerie instantanée
** un programme interfacé avec Wikipédia
** un serveur Web

## Partie 2 - Le langage

* Afficher un texte
* Structure d'un programme
* Variables
* Opérateurs
* Structures de contrôle
* Instructions répétitives
* Types
** Numériques
** Booléens
** Chaines de caractères
** Listes
** Tuples
** Dictionnaires
** Dates
** Ensembles
* Fonctions
* Modules
* Exercices
** Palindrome
* Regex
* Programmation orientée objet pour les non-programmeurs
* Classes
* Classes et Interfaces graphiques
* Fichiers
* Exceptions
* Bases de données
** Gestion
* L'interface CGI
* Applications web
* Réseau
* Threads

## Partie 3 - Les bibliothèques

* Bibliothèques pour Python
* L'interface graphique
* Utilisation de fenêtres et de graphismes
** Tkinter
** Widgets
** Turtle
* Les threads
* XML
* JSON
* Tests
* Analyse statique de programmes
* Fabric
* Le Web
** Django
** Karrigell
** Aiohttp

## Partie 1 - Introduction

* Avant-propos à l'attention des non-programmeurs
* Introduction
* Installation
* Éditeurs
* Programmer en deux minutes
** une messagerie instantanée
** un programme interfacé avec Wikipédia
** un serveur Web

## Partie 2 - Le langage

* Afficher un texte
* Structure d'un programme
* Variables
* Opérateurs
* Structures de contrôle
* Instructions répétitives
* Types
** Numériques
** Booléens
** Chaines de caractères
** Listes
** Tuples
** Dictionnaires
** Dates
** Ensembles
* Fonctions
* Modules
* Exercices
** Palindrome
* Regex
* Programmation orientée objet pour les non-programmeurs
* Classes
* Classes et Interfaces graphiques
* Fichiers
* Exceptions
* Bases de données
** Gestion
* L'interface CGI
* Applications web
* Réseau
* Threads

## Partie 3 - Les bibliothèques

* Bibliothèques pour Python
* L'interface graphique
* Utilisation de fenêtres et de graphismes
** Tkinter
** Widgets
** Turtle
* Les threads
* XML
* JSON
* Tests
* Analyse statique de programmes
* Fabric
* Le Web
** Django
** Karrigell
** Aiohttp
[ Modifier le sommaire ]

## Créer des interfaces python avec Tkinter
### Que faut-il posséder d'abord ?

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. Sinon :
Ensuite il vous suffit d'importer la bibliothèque dans votre programme :

### Principes de base

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.

### Créer une fenêtre pour l'application
#### Propriétés et méthodes de l'objet fenêtre

le programme est le suivant :

### Qu'est-ce qu'un widget ?

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

Chaque widget (objet d'interface) doit être créé puis placé dans la fenêtre
* La commande Fenetre.destroy est une méthode de destruction qui s'applique à l'objet fenêtre. 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"

* 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

L'incontournable "Hello world"

#### Propriétés et méthodes de l'objet label

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

### Le widget Entry
#### Propriétés et méthodes de l'objet Entry

L'objet Entry est une zone de saisie de texte que l'on crée de la manière suivante:
Vous pouvez l'utiliser dans des situations plus complexes comme, par exemple, un formulaire que je vous laisserai examiner:

### Le widget Canvas

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 :

#### Quelques propriétés de l'objet Canvas

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

* .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
## Installation des Python méga-widgets

Python megawidgets (Pmw) est un créateur de widget utilisant Tkinter.
Visitez le site web : http://pmw.sourceforge.net et cliquez sur le lien : « Download Pmw12tar.gz » pour télécharger le fichier correspondant.
Décomprimez ce fichier archive dans un répertoire temporaire, à l'aide d'un logiciel de décompression tel que tar, Winzip, Info-Zip, unzip…
Recopiez l'intégralité du sous-répertoire Pmw qui s'est créé automatiquement, dans le répertoire où se trouve déjà l'essentiel de votre installation de Python.
Sous Windows, il s'agira par exemple de C:\Python23.
Sous Linux, il s'agira vraisemblablement de /usr/lib/python.

## Voir aussi

* 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