Zone de confinement avec Python (GUI)
Méthode : Préparation
Utilisation d'édupython 3 et des Modules/Librairies folium, webbrowser, tkinter (Rappel installation Bibliothèque/Module).
Interaction Utilisateur/Ordinateur à l'aide d'une Interface Graphique Utilisateur (GUI = Graphical User Interface).
Simulation : Code Python
1
#---------BIBLIOTHEQUES/MODULES---------2
import folium
3
import webbrowser
4
from tkinter.messagebox import * # boîte de dialogue
5
from tkinter import *
6
import tkinter as tk
7
8
#----------FONCTIONS----------9
# Fonction carte10
def carte():
11
# Récupération des données entrées12
nomlieu = nom.get()
13
longitude = long.get()
14
latitude = lat.get()
15
cercle1 = per1.get()
16
cercle2 = per2.get()
17
# lieu = [46.548312, 3.287667]18
lieu = [longitude, latitude]
19
# Création d'une carte20
carte= folium.Map(location=lieu,zoom_start=12)
21
# Ajout marqueur avec légende, couleur22
folium.Marker(
23
location=lieu,
24
popup=nomlieu,
25
icon=folium.Icon(color='green')
26
).add_to(carte)
27
# Cercle de confinement en mètres (radius = 1000 pour 1 km)28
folium.Circle(lieu,radius = cercle1, fill=True, color='red' ).add_to(carte)
29
folium.Circle(lieu,radius = cercle2, fill=True, color='orange' ).add_to(carte)
30
# enregistrement et affichage de la carte31
nomcarte = nomlieu+'_'+cercle1+'_'+cercle2+'.html'
32
carte.save(nomcarte)
33
webbrowser.open(nomcarte)
34
35
#----------PROGRAMME PRINCIPAL----------36
37
# Création de la fenêtre principale (main window)38
Mafenetre = tk.Tk()
39
Mafenetre.title('Périmètres')
40
# Taille de la fenêtre41
Mafenetre.geometry("460x220")
42
Mafenetre.configure(bg = 'orange')
43
tk.Label(Mafenetre, text = 'Périmètre(s) d'+"'"+'influence ',
44
bg = 'orange', font=("Arial", 12, "bold")).grid(row=0, column=1)
45
46
# widget Nom du Lieu47
tk.Label(Mafenetre, text = 'Nom du Lieu ',
48
bg = 'orange', font=("Arial", 11)).grid(row=1)
49
nom = tk.Entry(Mafenetre, bg ='bisque', fg='blue', font=("Arial", 11))
50
nom.grid(row=1, column=1)
51
tk.Label(Mafenetre, text = '*', bg = 'orange', fg = 'red', font=("Arial", 11)).grid(row=1, column=2)
52
# widget Longitude53
tk.Label(Mafenetre, text = 'Longitude ',
54
bg = 'orange', font=("Arial", 11)).grid(row=2)
55
long = tk.Entry(Mafenetre, bg ='bisque', fg='green', font=("Arial", 11))
56
long.grid(row=2, column=1)
57
tk.Label(Mafenetre, text = '*', bg = 'orange', fg = 'red', font=("Arial", 11)).grid(row=2, column=2)
58
# widget Latitude59
tk.Label(Mafenetre, text = 'Latitude ',
60
bg = 'orange', font=("Arial", 11)).grid(row=3)
61
lat = tk.Entry(Mafenetre, bg ='bisque', fg='green', font=("Arial", 11))
62
lat.grid(row=3, column=1)
63
tk.Label(Mafenetre, text = '*', bg = 'orange', fg = 'red', font=("Arial", 11)).grid(row=3, column=2)
64
65
# widget Petit périmètre66
tk.Label(Mafenetre, text = 'Petit Périmètre (en m) ',
67
bg = 'orange', font=("Arial", 11)).grid(row=4)
68
per1 = tk.Entry(Mafenetre, bg ='bisque', fg='red', font=("Arial", 11))
69
per1.grid(row=4, column=1)
70
tk.Label(Mafenetre, text = '*', bg = 'orange', fg = 'red', font=("Arial", 11)).grid(row=4, column=2)
71
72
# widget Grand périmètre73
tk.Label(Mafenetre, text = 'Grand Périmètre (en m) ',
74
bg = 'orange', font=("Arial", 11)).grid(row=5)
75
per2 = tk.Entry(Mafenetre, bg ='bisque', fg='red', font=("Arial", 11))
76
per2.grid(row=5, column=1)
77
tk.Label(Mafenetre, text = 'Optionnel', bg = 'orange', font=("Arial", 11)).grid(row=5, column=2)
78
79
# widget bouton Valider80
Valider = tk.Button(Mafenetre, text ='Valider', font=("Arial", 12, "bold"), command=carte)
81
Valider.grid(row=6, column=1, sticky=tk.W, pady=4)
82
83
# widget bouton Quitter84
Quitter = tk.Button(Mafenetre, text ='Quitter', font=("Arial", 12, "bold"), command = Mafenetre.destroy)
85
Quitter.grid(row=6, column=2, sticky=tk.W, pady=4)
86
87
# widget Obligatoire88
tk.Label(Mafenetre, text = '* Champs obligatoire', bg = 'orange', fg = 'red', font=("Arial", 11)).grid(row=7, column=1)
89
90
Mafenetre.mainloop()
