# Documentation : http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/index.html import tkinter from PIL import ImageTk # Variable globale pour le logo (voir plus loin) image = None # Si on clique dans la fenêtre, on verra les coordonnées s'afficher dans le terminal def click(event): print("clic souris : ", event.x, event.y) # L'application sera contenue dans une /Frame/ (un conteneur). # Cette frame contiendra un /Canvas/ qui contiendra des objets graphique. # On peut faire ce programme *sans* utiliser de /Frame/, mais directement le # canvas. Cependant, si par la suite on souhaite ajouter d'autres éléments graphiques # ce sera tout prêt... def gui(parent): # Titre de l'application : parent.title("Example graphique Tkinter sans classe") # Création de la Frame frame = tkinter.Frame(parent) # Disposition de la Frame (dans la fenêtre application). La frame va prendre toute la place # disponible dans la fenêtre, même si on change la taille de la fenêtre frame.pack(fill='both', expand=1) # On crée un canevas de taille 400x300 dans la Frame canvas = tkinter.Canvas(frame, width=300, height=400, background="grey") # Le canevas est "packé" dans sa fenêtre en laissant une petite bordure de taille 8 canvas.pack(padx=8, pady=8)# Ajouter fill='both', expand=1 pour voir... draw_board(canvas) # On demande à associer la callback /click/ à l'événement // canvas.bind("", click) def draw_board(canvas): global image # On trace un rectangle rouge : coin hg 10,10, coin bd 100,20 canvas.create_rectangle(10, 10, 100, 30, fill="#ff0000") # Puis un bleu canvas.create_rectangle(80, 20, 200, 60, fill="#0000ff", outline="#00ff00") # On trace une ligne violette canvas.create_line(0, 0, 200, 300, fill="#ff00ff") # On charge l'image image = ImageTk.PhotoImage(file="python.png") # Et on l'affichge, les coordonnées sont celles du centre (anchor="c") canvas.create_image(128,128, image=image, anchor="c") # Attention, on ne peut pas utiliser de variable locale pour l'image car après avoir # donné l'ordre d'affichage /create_image/ Tk doit pouvoir continuer à disposer des données. # Or les variables locales sont libérées (et l'image effacée) à la sortie de la fonction # qui les contient. C'est pourquoi on utilise ici une variable globale (il y a d'aurtes solutions # toutefois... # Création de l'application root = tkinter.Tk() # Ajout des éléments graphiques gui(root) # Boucle des événements root.mainloop()