Python Interfaces graphiques Lycée Louis Vincent SEANCE 9 Python Interfaces graphiques Lundi 13 janvier 2 014
La programmation objet Contenu de la séance 9 : La programmation objet Les CANEVAS. Méthodes Exemples Propriétés Gestion du clavier et de la souris. Exercices. Lundi 13 janvier 2 014
Le WIDGET CANVAS Le widget Canvas (canevas, en français) est une zone de dessin rectangulaire. Il permet de dessiner sur la fenêtre. L'angle haut gauche du canevas est l'origine des coordonnées (x,y)=(0,0). Quelques propriétés : 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) Lundi 13 janvier 2 014
CANVAS Quelques méthodes : create_arc(x1,y1,x2,y2): Pour créer un arc de cercle create_line(x1,y1,x2,y2): Pour créer une ligne create_oval(x1,y1,x2,y2): Pour créer un cercle ou une ellipse create_rectangle(x1,y1,x2,y2): Pour créer un rectangle create_text(x,y): Texte create_image(x,y) :insertion d’une image Exemple : cf. exCanvas_V3.py et exCanvas2_V3.py Résumé en français (pour v2.7) : http://www.jchr.be/python/tkinter.htm Lundi 13 janvier 2 014
Exemple 1 : from tkinter import * Fenetre=Tk() #La fonction Tk() du module Tkinter Fenetre.title("Mon programme en 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=494,height=494,bg='yellow',bd=3,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,499,499,fill='red',width=4) # Dessine une ligne zone_dessin.create_line(0,499,499,0,fill='red',width=4) # Dessine une ligne zone_dessin.create_rectangle(150,150,350,350) # Dessine un carré zone_dessin.create_oval(150,150,350,350,fill='blue',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() Lundi 13 janvier 2 014
Exemple 2 : from tkinter import * racine=Tk() photo=PhotoImage(file= "andromede.gif") # creation d'un objet de la classe PhotoImage racine.geometry("800x600") #détermination de la taille de la fenêtre principale racine.title("800x600") fond=Canvas(racine, bg='blue',width=600,height=300) fond.pack(side=LEFT) for i in range (1,6): fond.create_line(i*100,0,i*100,300) for i in range (1,3): fond.create_line(0,i*100,600,i*100) img=fond.create_image(400,100,image=photo) racine.mainloop() Lundi 13 janvier 2 014
Changer les propriétés D’autre méthodes de Canvas dans le document. http://www.pythonware.com/library/tkinter/introduction/tkinter- reference.htm Méthodes Effet : C.delete (item) Efface l’item item du canvas C C.delete (ALL) Efface tout ce qui se trouve dans C C.coords (item,x0,y0) ou C.coords (item,x1,y1,x2,y2) Modifie les coordonnées de l’item. Cela permet de faire des déplacements C.itemconfig (item,options) Permet de modifier les options de item C.itemcget (item,options) Renvoie la valeur de la propriété Lundi 13 janvier 2 014
Méthode place () place() : Place les objets à une position définie par des coordonnées. Exemple : L=Label(text="premiere ligne" ) L.place(x=10,y=50) Pour effacer un objet, utiliser les méthodes place_forget(),grid_forget() ou pack_forget() Lundi 13 janvier 2 014
Gestion du clavier et souris La méthode bind () permet d’exécuter une fonction quand un événement est détecté par un composant Obj.bind(evt, fct) obj : identificateur de l’obejt devant intercepter l’événement evt. fct est appelée lorsque l’événement survient, elle a un paramètre de type Event. La fonction appelée est de la forme def fct (evt): Lundi 13 janvier 2 014
Gestion du clavier et souris Les types d’événements : <Key> : Intercepter la pression de n’importe quelle touche du clavier. <Button-i> : Intercepter la pression d’un bouton de la souris. i doit être remplacé par 1,2,3. <ButtonRelease-i> : Intercepter le relâchement d’un bouton de la souris. <Double-Button-i> : Intercepter la double pression d’un bouton de la souris. <Motion> : Intercepter le mouvement de la souris, dès que le curseur bouge, la fonction liée à l’événement est appelée. <Enter> : Intercepter un événement correspondant au fait que le curseur de la souris entre la zone graphique de l’objet. <Leave> : Intercepter un événement correspondant au fait que le curseur de la souris sorte la zone graphique de l’objet. Lundi 13 janvier 2 014
Gestion du clavier : L’objet evt que l’on récupère lors d’une action au clavier, peut aussi renvoyer d’autres informations : Propriété : Retour : evt.char Renvoie le caractère correspondant à la touche enfoncée. evt.keysym Renvoie une chaîne de caractères contenant le symbole correspondant à la touche enfoncée. evt.keycode Renvoie un entier contenant le code correspondant à la touche enfoncée. evt.widget Renvoie le widget sur lequel l’action a été déclenchée. Lundi 13 janvier 2 014
Gestion du clavier Exemple 3 : from tkinter import * def touche (evt): print("Vous avez appuyé sur la touche :" ,evt.char) print("Vous avez appuyé sur la touche :" ,evt.keysym) print("Vous avez appuyé sur la touche :" ,evt.keycode) fenetre=Tk() fenetre.bind('<Key>' ,touche) fenetre.mainloop() Lundi 13 janvier 2 014