Bonjour a tous, je suis lycéen et travaille actuellement sur un projet de conceptions d'emplois du temps.
Il est fonctionnel cependant j'aimerais l'ameliorer :
- j'aimerais pouvoir faire en sorte que des etiquettes se recréées a cahque fois que une est prise (ex: si une étiquette "Nathan est utilisée alors une autre se crée a l'amplace de base).
-j'aimerais également que mon bouton puisse relancer le programme et non pas juste le fermer.

le code:::

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
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()