Blog du groupe ISN de M. Chaumette - Lycée Jean-Paul Sarte - 69 BRON

23 avril 2014

Dates épreuve ISN

Veuillez trouver ci-dessous les horaires de passage de l'épreuve de BAC d'ISN. Vous recevrez dans les prochains jours la convocation officielle.

Je suis conscient que certains auront le même jour l'épreuve d'ISN et de LV2. Je n'ai pas pu faire autrement
(le Rectorat impose les dates)
Je vous rappelle que l'épreuve est individuelle et dure 20 min (8 min de présentation + 12 min de questions).

 

Couper 

Nous profiterons de la séance du lundi 12 mai pour tout boucler (dossier à remettre le 13 mai)

et celle du lundi 19 mai de 10 à 12 pour affiner les derniers détails.

 

Je vous rappelle que l'enseignement d'ISN se poursuit jusqu'à la fin officielle des cours.

Nous travaillerons le langage HTML, les styles CSS et la théorie réseau.

 

Bon courage pour cette fin d'année.

 

Posté par chaumette_isn à 16:09 - Commentaires [0] - Permalien [#]


31 mars 2014

Réponse à un problème: repérer et changer une image dans un canvas via son TAG

Il est possible de modifier la photo d'une zone d'image contenue dans un canvas en cours de programme grace à itemconfig et le tag de la zone d'image.

Le petit programme ci-dessous (à adapter à votre problème bien sûr) affiche trois images "noires" dans un canvas et, quand on clique sur une des images, change son contenu. Cette portion de code pourra être utile en particulier à Laurine et Théo, éventuellement à Jessim et Naël (pour la gestion de la position du clic), peut-être à Florian et Aymeric...

Les images ISN.jpg et ISN_noir.jpg en pièce jointes doivent être dans le dossier python.

ISN

ISN_noir

from Tkinter import *
from PIL import Image, ImageTk

fenetre = Tk()
fenetre.geometry('800x500')

def Clic_canvas(event):
    # on teste les coordonnées pour savoir quelle image est cliquée
    tag_cliqued=0
    if (0<event.x <150) and (0<event.y<150):
        # on a cliqué sur l'image dont le tag est 1:
        # on crée une variable tag_cliqued qui contient le tag de l'image cliquée
        tag_cliqued=1
    if (200<event.x <350) and (0<event.y<150):
        # idem avec la "2"
        tag_cliqued=2
    if (400<event.x <550) and (0<event.y<150):
        tag_cliqued=3

    # puis on change son image (grace à son tag)
    # si elle possède un tag compris entre 1 et 3
    if 0<tag_cliqued<4:
    Mon_canvas.itemconfig(tag_cliqued,image=photo)


# déclaration de la zone Canvas
Mon_canvas = Canvas(fenetre)
# on met le fichier "Logo.jpg" dans l'objet que j'appelle "im"
im = Image.open("ISN.jpg")
# cet objet (contenant le fichier image) est mis dans un objet Tkinter que j'appelle "photo"
photo = ImageTk.PhotoImage(im)
# idem avec une photo noire
im_noire=Image.open("ISN_noir.jpg")
photo_noire = ImageTk.PhotoImage(im_noire)

# on crée 3 zones d'image dans le canvas et on leur associe l'image "photo_noire"
# et un tag
for i in range (0,3):
    Mon_canvas.create_image(i*200,0,image=photo_noire, anchor=NW,tag=i+1)

# on affiche le canvas
Mon_canvas.place(x=100,y=100,width=700)
# on guette l'évènement du canvas "clic-gauche" et on appelle la fct Clic_Canvas
Mon_canvas.bind("<Button-1>",Clic_canvas)

fenetre.mainloop()

Posté par chaumette_isn à 16:54 - Commentaires [0] - Permalien [#]

26 mars 2014

Réponse à des demandes: Repérer un objet contenu dans un Canvas

 

Vous êtes nombreux à avoir besoin de créer plusieurs images ou plusieurs rectangles et surtout de les repérer individuellement (pour les faire disparaître, changer leur image, leur couleur,...).
Il faut dans ce cas utiliser un canvas contenant plusieurs objets (rectangle, image etc...) et d'associer une étiquette (un "tag") à chacun des objets du canvas. Cela peut-être un numéro ou un texte.
Voici un code montrant comment créer 9 rectangles à l'aide d'une boucle et comment agir sur certains d'entre eux pour modifier leurs propriétés.
En comprenant ce code, vous pourrez l'adapter à des images ou à vos besoins.
Cela concerne principalement encore Sarah et Simon, Jérôme et Benjamin, Laurine et Theo,
Florian et Aymeric, et peut-être (suivant l'algorithme choisi) Jessim et Naël...

 

# programme expliquant comment associer une étiquette aux widgets dans un CANVAS

# cette étiquette permet de repérer facilement les widgets d'un canvas
# L'exemple est basé sur des rectangles mais fonctionne de la même
# manière avec des cercles, des images, des segments d'un canvas...
# O. Chaumette - Lycée JP Sartre - 69 BRON

from Tkinter import *

# fonctions ###########################
def Efface_tout():
    for i in range(1,10):
    # on efface les rectangle dont le tag est i (variant de 1 à 9)

    Mon_Canvas.delete(i)

def Efface2():
    # Efface le rectangle dont le tag est "2" du canvas
    Mon_Canvas.delete(2)

def Colore3():
    # on remplit en bleu le rectangle dont le tag est 3
    # avec ITEMCONFIG( tag, propriété à changer (position, couleur etc...)
    Mon_Canvas.itemconfig(3,fill="blue")

# Widgets ############################"
Fenetre= Tk()

Mon_Canvas = Canvas(Fenetre, width=350, height=300)
Mon_Canvas.pack() #Affiche le canevas en haut à gauche de la fenetre


# on definit et affiche plusieurs rectangles (ici 10) dans le canvas.
for i in range(1,10):
    # lors de la creation du rectangle, on affecte une étiquette
    # (on appelle cela un "tag") à chaque rectangle.
    # ici, j'ai choisi de mettre comme étiquette un numéro ("i")
    # on pourrait aussi mettre un texte.
    # Le "tag" permet d'identifier et de repérer le rectangle au sein
    # du canvas.
    Mon_Canvas.create_rectangle(10+20*i,10,30+20*i,30,tag=i)


# les boutons ...
Bouton_Quitter = Button(Fenetre,text="Quitter",command=Fenetre.destroy)
Bouton_Quitter.place(x=300,y=250)

Bouton_Efface2= Button(Fenetre,text="Efface Rectangle n°2",command=Efface2)
Bouton_Efface2.place (x=150,y=250)

Bouton_EffaceTout=Button(Fenetre,text="Efface tous les Rectangles",command=Efface_tout)
Bouton_EffaceTout.place (x=5,y=250)

Bouton_Colore3= Button(Fenetre,text="Colore en bleu Rectangle n°3",command=Colore3)
Bouton_Colore3.place (x=150,y=280)


# Boucle principale ######################"

Fenetre.mainloop()

 

Posté par chaumette_isn à 17:57 - Commentaires [0] - Permalien [#]

Réponse à des demandes: Afficher/cacher un objet contenu dans un Canvas

Suite au questionnement de certains groupes, voici quelques infos complémentaires concernant les canvas.

Au lieu de créer plusieurs canvas avec chacun un objet (rectangle, image, cercle...), il est préférable d'en créer un seul contenant plusieurs objets.
Il est alors possible d'afficher/cacher un des objet situé dans le canvas.
Voici une portion de code montrant simplement comment afficher ou détruire un rectangle dessiné dans un canvas.
On peut l'adapter à un cercle ou une image...
Cela peut-être interessant, entre autres, pour Sarah et Simon, pour Jérôme et Benjamin, pour Laurine et Theo,
Florian et Aymeric...

# programme expliquant comment dessiner/effacer un widget d'un CANVAS
# O. Chaumette - Lycée JP Sartre - 69 BRON

from Tkinter import *

# fonctions ###########################
def Dessine():
    # IMPORTANT !!! on définit le widget "Mon_Rectangle comme "global"
    # pour qu'il soit reconnu dans la fonction (alors qu'il a été créé
    # dans le programme principal)
    global Mon_Rectangle
    #re-dessine le rectangle
    Mon_Rectangle= Mon_Canvas.create_rectangle(100,100,200,200)

def Efface():
    global Mon_Rectangle
    # Efface le rectangle "Mon_Rectangle" du canvas
    Mon_Canvas.delete(Mon_Rectangle)

# Widgets ############################"
Fenetre= Tk()

Mon_Canvas = Canvas(Fenetre, width=300, height=300)
Mon_Canvas.pack() #Affiche le canevas en haut à gauche de la fenetre

# definit et affiche un rectangle dans le canvas.
# le rectangle a un nom: "Mon_Rectangle" (très utilse de lui donner un nom !)
Mon_Rectangle= Mon_Canvas.create_rectangle(100,100,200,200) 

# les boutons ...
Bouton_Quitter = Button(Fenetre,text="Quitter",command=Fenetre.destroy)
Bouton_Quitter.place(x=250,y=250)

Bouton_Efface= Button(Fenetre,text="Efface Rectangle",command=Efface)
Bouton_Efface.place (x=25,y=250)

Bouton_Dessine=Button(Fenetre,text="Dessine Rectangle",command=Dessine)
Bouton_Dessine.place (x=125,y=250)

# Boucle principale ######################"
Fenetre.mainloop()

Posté par chaumette_isn à 17:51 - Commentaires [0] - Permalien [#]

17 février 2014

Pour les groupes ayant comme projet la conception d'un jeu 2D

Il existe un module Python très pratique pour la conception des jeux 2D. Il s'agit de Pygame (http://www.pygame.org/)

Source: Externe

Ce module permet, entre autres, d'afficher simplement des images, de les déplacer, de gérer les évènements claviers/souris.

On trouve des tutoriaux très bien fait aux adresses suivantes:

http://fr.openclassrooms.com/informatique/cours/interface-graphique-pygame-pour-python/presentation-de-pygame

http://fr.wikibooks.org/wiki/Pygame

http://fr.wikibooks.org/wiki/Pygame/D%C3%A9placer_une_image

 

Il est tout à fait possible d'utiliser Pygame dans un projet ISN. Le code propre à Pygame devra être bien commenté.

 

Posté par chaumette_isn à 08:38 - Commentaires [0] - Permalien [#]

03 février 2014

Encore une semaine pour réfléchir...

Je vous encourage à réfléchir, au cours de cette semaine, à votre projet.

Il serait bien que les groupes soient constitués et une idée de projet ait germée d'ici lundi 10 février.

Vous pouvez également commencer à créer votre blog sur canalblog.

 

Posté par chaumette_isn à 08:58 - Commentaires [0] - Permalien [#]

20 janvier 2014

Ouverture du Blog

Ouverture du blog en vu des projets bac d'ISN qui débuterons à partir du 10 février 2014

Posté par chaumette_isn à 13:22 - Commentaires [0] - Permalien [#]