• Aucun résultat trouvé

Boucle Évènementielle

N/A
N/A
Protected

Academic year: 2022

Partager "Boucle Évènementielle"

Copied!
5
0
0

Texte intégral

(1)

Interfaces Graphiques

Programme Séquentiel Programme Évènementiel Initialisations

Traitements

Finalisation

Initialisations

Boucle évènementielle

Finalisation

Boucle Évènementielle

Le programme demande au système de lui fournir l'évènement suivant à traiter:

Évènements utilisateur: souris, clavier…

Évènements système: montage système de fichiers, mise en veille, timer…

Évènements graphiques: redimensionnement fenêtre, passage en premier plan, rafraîchissement nécessaire, changement palette de couleurs…

3

Laurent POINTAL - LIMSI COURS PYTHON

Éléments Graphiques

(Frames, Widgets, Controles...) Fenêtres, fenêtres documents (SDI et MDI).

Dialogues (modaux et non modaux), palettes d'outils.

Barre de menus, menus surgissant.

Boutons d'action, cases à cocher, boutons radio.

Étiquettes, champs d'édition, champs avec menu de sélection.

Barres de défilement.

Listes à sélection.

Arborescences.

Décorations (icônes, dessins, lignes…)

4

Laurent POINTAL - LIMSI COURS PYTHON

Hiérarchie d'éléments graphiques

Deux méthodes pour le positionnement:

Coordonnées absolues codées en dur.

Coordonnées calculées dynamiquement...

positionneurs automatiques (layout, sizer).

edit - chaines.py

l34 - c22 - insertion

#!/bin/env python

# -*- coding: ascii -*-

"""extraction des chaines ...

"""

import os,sys ...

Fichier Edition Outils Aide Recherche

Texte:

Rechercher Annuler

Vers le bas Vers le haut

(2)

Définition d'une interface

Définition des éléments graphiques.

De leur organisation physique (prise en compte de leurs relations logiques pour leurs positions).

De leurs attributs graphiques.

Des actions associées à leur manipulation.

Librairies Graphiques

Création d'interfaces utilisateur

pyQT pyGTK

wxPython (wxWidgets) win32gui (win32all) ...

Graphisme (courbes & Co)

VTK (The Visualization Toolkit) PIDLE (Plugin Drawing, Does Little Else) motplotlib (Matlab-like)

pyQwt wxPyPlot FloatCanvas SciPy KMatplot ...

7

Laurent POINTAL - LIMSI COURS PYTHON

Tkinter

Installé en standard avec Python.

Mapping de la librairie Tk de Tcl dans Python.

Multi-plateforme.

Nombre de widgets standards relativement limité.

Packages d'extension (Tix, Pmw).

Assez simple:

Gère la boucle évènementielle.

Dispatch les évènements vers des 'callback'.

Docs en ligne assez pauvre, voir les liens indiqués dans la doc (ex. "Thinking in Tkinter", "An introduction to Tkinter", "Tkinter reference: a GUI for Python")

8

Laurent POINTAL - LIMSI COURS PYTHON

Widgets Tkinter

Label - étiquette.

Entry - champs d'édition.

Button - bouton de commande.

Radiobutton - bouton à choix 1 parmi n.

Checkbutton - bouton à option (oui/non).

Menu - menu déroulant.

Text - text complexe (style, taille, images...).

Listbox - liste à sélection.

Frame - conteneur d'autres widgets.

Canvas - zone de tracé graphique.

(3)

Widgets Tkinter (2)

Toplevel - fenêtre.

Scrollbar - barre de défilement.

Menubutton – bouton pour menu popup.

Scale - curseur de sélection, thermomètre.

Message - texte long non éditable ajusté.

Layouts Tkinter

Packer - remplissage au fur et à mesure suivant directives.

Grid - répartition dans une grille virtuelle , les widgets occupant les cellules demandées.

Placer - positionnement précis 'à la main', sans influer sur le conteneur.

11

Laurent POINTAL - LIMSI COURS PYTHON

Pour Démarrer

from Tkinter import * root = Tk()

root.title("Ma fenêtre")

...widget = ClasseDuWidget(parent,att=valeur,…) widget.pack(options)

...root.mainloop()

12

Laurent POINTAL - LIMSI COURS PYTHON

Attributs Généraux Widgets

bg (background) - couleur de fond.

fg (foreground) - couleur d'avant plan.

font - famille, taille, style.

cursor - forme de curseur.

relief - type d'encadrement.

bd (borderwidth) - largeur de l'encadrement.

takefocus - indicateur widget navigable au clavier.

(4)

Attributs Courants Widgets

text - contenu textuel du widget.

textvariable - variable Tkinter associée au contenu.

state - état du widget.

command - fonction à appeler.

height width - dimensions désirées.

justify - alignement multilignes.

anchor - position du contenu dans le widget.

underline - index caractère à souligner (raccourci).

padx pady - espace supplémentaire autour du widget.

bitmap image - image à afficher dans le widget.

xscrollcommand yscrollcommand - fonction pour scroll.

Méthodes Générales Widgets

Nombreuses (ie. cf doc) after… - code à appeler périodiquement.

bind… unbind… - gestion associations évènements - code (handlers).

clipboard… - gestion du presse-papiers (couper / copier / coller).

configure - modification d'options (comme à la création du widget).

destroy - …

event… - manipulation des files d'évènements.

focus… - gestion du focus (élément 'd'intérêt').

15

Laurent POINTAL - LIMSI COURS PYTHON

Méthodes Générales Widgets (2)

getvar setvar - support variables Tkinter.

grab… - gestion des poignées de manipulation d'objets graphiques.

image… - gestion des images lues.

mainloop quit - boucle évènementielle.

option… - gestion des options par défaut.

selection - gestion des sélections (texte principalement).

update… - mises à jours graphique.

wait… - attente de traitement de certains évènements.

winfo_… - méthodes bas niveau.

16

Laurent POINTAL - LIMSI COURS PYTHON

Méthodes Gestionnaire de Fenêtres

(les essentielles)

deiconify - retour fenêtre à l'état précédent l'iconisation.

resizable - autorisation de redimensionnement par l'utilisateur.

title - …

(5)

Variables Tkinter

Pour échanger des données de façon automatique entre les widgets et des objets Python.

Classes: StringVar, IntVar, BooleanVar, DoubleVar

Méthodes: set, get, trace_variable, trace_vdelete, …

Un exemple... et des commentaires

(le pseudo-éditeur de texte avec le dialogue de recherche)

Références

Documents relatifs

Point p2=p1 ; // constructeur de recopie : création de l’objet p2 // et son initialisation avec les données de p1.. Attention : il faut différencier entre recopie et

Puisque les réseaux de neurones convolutifs appliqués aux données image constituent actuellement l’al- ternative la plus fiable, nous orientons notre choix vers une telle

Lors de la création d’un tableau d’instances de Roue (comme par exemple dans la classe Voiture), il est appelé pour initialiser chaque cellule. Lors de la création de

Pour écrire le bilan (l'oxydant du couple (1) réagit sur le réducteur du couple (2), on "renverse la deuxième demi équation" et on "fait la somme" des

Comme dans le cas d’une méthode, si le code est très court, on peut directement mettre le constructeur dans la déclaration de la classe (définition en ligne). Exemple :

- Une méthode de classe (modificateur static en Java) exécute une action indépendante d’une instance particulière de la classe. - Une méthode de classe peut être considérée

- Réaliser une classe PointA, dérivée de Point disposant d’une méthode affiche affichant (en fenêtre console) les coordonnées d’un point. - Écrire un programme utilisant les

Par la suite, nous avons abordé deux algorithmes d’apprentissage par renforcement utilisés dans le chapitre 3, le Q-Learning qui utilise une tableau-Q pour trouver les