| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 
 |  
#!/usr/bin/env python3
from  tkinter import *
import tkinter as tk
 
#nom de la fentre : root !!!!!!!
 
class Fenetre(tk.Frame):
    def __init__(self, parent):
        super().__init__(parent)
        self.pack(fill='both', expand=1)        
        self.canvas = tk.Canvas(self, width=1920, height=1080, background="white") #taile canvas + couleur
        self.canvas.pack(padx=15, pady=15) 
 
 
    # ---------------------------------------------------------------------
 
        bouton_salle=Button (root, text="changer la salle de permance", command=root.destroy)
        bouton_salle.place(x=100, y=700, width=200, height=50)
 
    # ---------------------------------------------------------------------
        salle=input("Quelle est la salle ?")
        self.canvas.create_text(400, 55, text=salle, font=('geneva', 20), fill='red')
 
        self.canvas.create_rectangle(350, 800, 1375, 30, width=3)#emp global
        self.canvas.create_rectangle(350, 80, 1375, 30, width=3)#jour
        self.canvas.create_rectangle(350, 800, 450, 30, width=3)#heure
 
 
        self.canvas.create_rectangle(450, 800, 635, 30, width=3)#lundi
        self.canvas.create_rectangle(635, 800, 820, 30, width=3)#mardi
        self.canvas.create_rectangle(820, 800, 1005, 30, width=3)#mercredi
        self.canvas.create_rectangle(1005, 800, 1190, 30, width=3)#jeudi
        self.canvas.create_rectangle(1190, 800, 1375, 30, width=3)#vendredi
 
        self.canvas.create_rectangle(350, 160, 1375, 80, width=3)#1
        self.canvas.create_rectangle(350, 240, 1375, 160, width=3)#2
        self.canvas.create_rectangle(350, 320, 1375, 240, width=3)#3
        self.canvas.create_rectangle(350, 400, 1375, 320, width=3)#4
        self.canvas.create_rectangle(350, 480, 1375, 400, width=3)#5
        self.canvas.create_rectangle(350, 560, 1375, 480, width=3)#6
        self.canvas.create_rectangle(350, 640, 1375, 560, width=3)#7
        self.canvas.create_rectangle(350, 720, 1375, 640, width=3)#8
        self.canvas.create_rectangle(350, 800, 1375, 720, width=3)#9
 
        self.canvas.create_text(540, 55, text='Lundi', font=('geneva', 20), fill='black')
        self.canvas.create_text(730, 55, text='Mardi', font=('geneva', 20), fill='black')
        self.canvas.create_text(915, 55, text='Mercredi', font=('geneva', 20), fill='black')
        self.canvas.create_text(1090, 55, text='Jeudi', font=('geneva', 20), fill='black')
        self.canvas.create_text(1280, 55, text='Vendredi', font=('geneva', 20), fill='black')
 
        self.canvas.create_text(400, 95, text='8H30', font=('geneva', 15), fill='black')
        self.canvas.create_text(400, 145, text='9H25', font=('geneva', 15), fill='black')
        self.canvas.create_text(400, 175, text='9H25', font=('geneva', 15), fill='black')
        self.canvas.create_text(400, 225, text='10H20', font=('geneva', 15), fill='green')
        self.canvas.create_text(400, 255, text='10H35', font=('geneva', 15), fill='green')
        self.canvas.create_text(400, 305, text='11H30', font=('geneva', 15), fill='black')
        self.canvas.create_text(400, 335, text='11H30', font=('geneva', 15), fill='brown')
        self.canvas.create_text(400, 385, text='12H30', font=('geneva', 15), fill='brown')
        self.canvas.create_text(400, 415, text='12H30', font=('geneva', 15), fill='brown')
        self.canvas.create_text(400, 465, text='13H30', font=('geneva', 15), fill='brown')
        self.canvas.create_text(400, 495, text='13H30', font=('geneva', 15), fill='brown')
        self.canvas.create_text(400, 545, text='14H30', font=('geneva', 15), fill='brown')
        self.canvas.create_text(400, 575, text='14H30', font=('geneva', 15), fill='black')
        self.canvas.create_text(400, 625, text='15H25', font=('geneva', 15), fill='green')
        self.canvas.create_text(400, 655, text='15H40', font=('geneva', 15), fill='green')
        self.canvas.create_text(400, 705, text='16H35', font=('geneva', 15), fill='black')
        self.canvas.create_text(400, 735, text='16H35', font=('geneva', 15), fill='black')
        self.canvas.create_text(400, 785, text='17H30', font=('geneva', 15), fill='black')
 
    # ---------------------------------------------------------------------        
 
        self.create_drawing()
 
    def move(self, event):
        def node_center(tag):
            """ Renvoie le centre du noeud étant donné
                son rectangle englobant
            """
            x1, y1, x2, y2 = self.canvas.coords(tag)
            return (x1 + x2) // 2, (y1 + y2) // 2 #calcule le centre de chaques cases
    # ---------------------------------------------------------------------
        x, y = event.x, event.y # Coordonnées cliquées
        tags = self.canvas.gettags(tk.CURRENT) # tags contient le tag "node-B" et "current"
 
        for tag in tags:
            if not tag.startswith("node"):
                continue
            # Ceci est normalement effectué pour un seul tag (par ex "node-B").
            # Comme deux objets ont ce tag, les deux sont déplacés simultanément
            # par self.canvas.move...
            x1, y1 = node_center(tag)
            self.canvas.move(tag, x-x1, y-y1) 
 
 
 
    def create_drawing(self):
        # Affichage des noeuds et du texte
        node1 = [("ANGELINA", 100, 100), ("VIRGINIE", 100, 200), ("CELINE", 100, 300), ("PASCALE", 100, 400),
                 ("ROMANE", 100, 500),("ALLISTER", 250, 300),("WAYRA", 250, 400), ("EMILIE", 250, 500), ("ROSIE", 250, 600),] #texte + coordonées 
        for nodename, nodex, nodey in node1:
            tmpnode = self.canvas.create_rectangle(nodex - 50, nodey - 30, #taille case
                                              nodex + 50, nodey + 30, #taille case
                                              fill="white", outline="black")
            tmptxt = self.canvas.create_text(nodex, nodey, fill="magenta", text=nodename)
            tag = "node-{}".format(nodename)
            self.canvas.addtag_withtag(tag, tmpnode) # On tague les objets avec : "node-A", "node-B"...
            self.canvas.addtag_withtag(tag, tmptxt)
            #Association callbacks au rond ET au texte
            self.canvas.tag_bind(tmpnode, '<B1-Motion>', self.move) 
            self.canvas.tag_bind(tmptxt, '<B1-Motion>', self.move)
 
            node2 = [("MAXIME", 100, 600), ("NATHAN", 250, 100), ("DAMIEN", 250, 200)] #texte + coordonées 
        for nodename, nodex, nodey in node2:
            tmpnode = self.canvas.create_rectangle(nodex - 50, nodey - 30, #taille case
                                              nodex + 50, nodey + 30, #taille case
                                              fill="white", outline="black")
            tmptxt = self.canvas.create_text(nodex, nodey, fill="blue", text=nodename)
            tag = "node-{}".format(nodename)
            self.canvas.addtag_withtag(tag, tmpnode) # On tague les objets avec : "node-A", "node-B"...
            self.canvas.addtag_withtag(tag, tmptxt)
            #Association callbacks au rond ET au texte
            self.canvas.tag_bind(tmpnode, '<B1-Motion>', self.move) 
            self.canvas.tag_bind(tmptxt, '<B1-Motion>', self.move)
 
 
 
     # ---------------------------------------------------------------------
 
 
 
     # ---------------------------------------------------------------------
 
 
 
root, gui = None, None
# Création de l'application
root = tk.Tk()
# Ajout des éléments graphiques 
gui = Fenetre(root)
# Boucle des événements
root.mainloop() |