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() |
Partager