Ajouter un programme python fonctionnel à de l'HTML
RésoluMrLemon Messages postés 78 Statut Membre -
Merci à tous ceux qui me répondront
Bonne journée à vous
- Ajouter un programme python fonctionnel à de l'HTML
- Editeur html - Télécharger - HTML
- Programme demarrage windows - Guide
- Ajouter un chromecast - Guide
- Ajouter un profil netflix - Guide
- Ajouter un commentaire sur word - Guide
32 réponses
- 1
- 2
Mettre un programme Python dans une page HTML et le faire s'exécuter directement depuis cette page repose sur une limitation : le navigateur interprète HTML et JavaScript, pas Python. Des réponses évoquent une voie avec JavaScript et ActiveX pour lancer cmd /c 'python ...', mais cette approche est Windows-only et expose à des risques de sécurité. D'autres insistent sur les défis des chemins et des noms de fichiers, et indiquent que l'exécution Python dans le navigateur n'est pas fiable en dehors d'IE ou sans serveur. En pratique, ces solutions restent limitées, et une approche robuste consiste à exécuter Python côté serveur et à communiquer via HTTP, plutôt que d'essayer une exécution locale directement dans la page.
<!doctype html>
<head>
<title>Mon programme d'images</title>
<style type="text/css">
p {color: #006666; font-family: Verdana; font-size : 16px}
a:link {text-decoration:none;}
</style>
<script language="Javascript">
function run_python()
{
var w = new ActiveXObject("WScript.Shell");
w.run('cmd /c "python C:\\Phil\\Dev\\html\\test.py"');
}
</script>
</head>
<body>
<p>Voici mon superbe programme Python :</p>
<a href = "javascript:run_python()"><font face = 'Verdana'> Fresque du climat</font></a>
<p>Chouette, non ?</p>
</body>
</html>
ouvrir avec Internet Explorer uniquement, et évidemment changer le chemin et nom du python:
C:\\Phil\\Dev.......
sur la page, cliquer sur le lien 'fresque du climat'
essaie en mettant les chemins des images dans le fichier Python:
images = {0:('C:\\Fresque\\Fresque_01.png', ……………....
on va y arriver !
Merci à tous pour votre aide !
L'invite reste ouverte après le clique peut on faire en sorte qu'elle disparaît ? Sinon c'est pas grave je chipote
Et juste une question, pouvez vous m'expliquer que fait ces lignes ?
function run_python()
{
var w = new ActiveXObject("WScript.Shell");
w.run('cmd /k "python C:\\fresque\\Le_rechauffement_climatique.py"');
}
Encore merci pour votre aide !
Notamment était-ce le libellé du chemin ou l'insertion d'un lien vers les images dans le fichier python?
Cela servira à d'autres et prouve une fois de plus que la persévérance et l'entraide sont efficaces et agréables.
normal car il y a le /k pour voir les erreurs !
remet le /c et la fenêtre se fermera ...
Ce code est une fonction en langage Javascript (attention, rien à voir avec Java !)
Le Javascript est le moyen qui permet d'exécuter des actions dans une page web, puisque le langage html n'est qu'un langage d'affichage, un langage de présentation
Cette fonction déclare une variable w et la défini comme un contrôle ActiveX (c'est ça qui fait peur à Windows quand on clique sur le lien: il peut y avoir des contrôles ActiveX malveillants, mais toi, tu reste en local, donc ça va)
Ensuite, en appliquant la méthode run à ce contrôle, on exécute une commande de l'interpréteur de commandes Windows et donc on fait exactement ce que tu fais à la main en entrant la commande
python C:\fresque\......
dans la fenêtre de l'invite de commandes
En fait, on peut exécuter des commandes de l'invite de commandes comme cls (efface l'écran),
dir (liste les répertoires et fichiers), etc.. dans pratiquement tous les langages:
En Python, on écrit:
import os
os.system('cls')
En langage C, on écrit:
system("cls");
En langage TCL, on écrit:
exec "cls"
Conclusions:
1_ toujours mettre les chemins des fichiers utilisés par un script Python, même s'ils sont
dans le même répertoire que le script
2_ effectivement (merci yg_be) cmd /k lance la commande en laissant l'invite de commandes ouverte, ce qui laisse le temps de lire les erreurs éventuelles
3_ Concernant les dossiers de travail et les fichiers:
Moi, à ta place, je laisserais tomber les dossiers de Windows du style C:\Utilisateurs
C:\Utilisateurs\bline\Bureau\, etc ...
Ces dossiers sont utilisés par Windows pour gérer les profils, stocker les raccourcis du bureau, des fichiers utiles au système, des images, des vidéos, etc ...
D'ailleurs, non seulement Utilisateurs s'appelle users mais Bureau s'appelle desktop:
C:\Users\33766\Desktop
C'est ça le piège !
Personnellement, que ce soit sur mon ordi perso ou professionnel, je fait dès le départ un dossier à moi:
C:\Phil et je travaille uniquement là-dedans:
C:\Phil\Dev\Python, C:\Phil\Photos, C:\Phil\videos, C:\Phil\suivi, etc ...
(Sur nos ordi professionnels, on a carrément partitionné le disque C:\ : on a créé une partition D:\ et tout est dedans : D:\data\clients\, D:\sources\ ....)
Et enfin, bien que Windows le permette désormais, je garde le réflexe de ne pas utiliser
de caractères exotiques, points, espaces, etc... dans les noms de dossiers ou de fichiers:
C:\toto\le dossier\le réchauffement.clim.py ---> C:\toto\le_dossier\le_rechauffement_clim.py
Et avec tout ça, je suis tranquille !
Voici mon programme :
from tkinter import *
def pick_souris(event):
global img_1
for k in range(len(images)):
x1 = images[k][2][0]
y1 = images[k][2][1]
x2 = images[k][2][2] + x1
y2 = images[k][2][3] + y1
image_2 = images[k][1]
if(event.x >=x1 and event.x <=x2 and event.y >=y1 and event.y <=y2):
fenetre_2 = Toplevel(fenetre_princ)
can2 = Canvas(fenetre_2,bg='white',height=w_height-10,width=w_width-10)
can2.place(x = 0,y = 0)
fenetre_2.attributes("-fullscreen", 1)
img_1 = PhotoImage(file=image_2)
can2.create_image(50,0,anchor = NW, image=img_1)
bou2= Button(fenetre_2, text="Quitter", command= fenetre_2.destroy)
bou2.pack(side=BOTTOM)
w_width=1600
w_height = 1200
fenetre_princ = Tk()
fenetre_princ.attributes("-fullscreen", 1)
fenetre_princ.title("I Les conséquences de nos actes")
fenetre_princ.geometry(str(w_width)+'x'+str(w_height))
can = Canvas(fenetre_princ,bg='#101a60',height=w_height-10,width=w_width-10)
can.place(x = 0,y = 0)
can.bind("<Button-1>", pick_souris)
#Image initiale: taille = 250x150
images = {0:('Fresque_01.png','Fresque_02.png',(0,30,250,150)),1:('Fresque_03.png','Fresque_04.png',(640,30,250,150)),
2:('Fresque_05.png','Fresque_06.png',(0,210,250,150)),3:('Fresque_07.png','Fresque_08.png',(0,390,250,150)),
4:('Fresque_09.png','Fresque_10.png',(0,750,250,150)),5:('Fresque_11.png','Fresque_12.png',(320,30,250,150)),
6:('Fresque_13.png','Fresque_14.png',(960,30,250,150)),7:('Fresque_15.png','Fresque_16.png',(400,390,250,150)),
8:('Fresque_17.png','Fresque_18.png',(0,570,250,150)),9:('Fresque_19.png','Fresque_20.png',(400,210,250,150)),
10:('Fresque_21.png','Fresque_22.png',(400,750,250,150)),11:('Fresque_23.png','Fresque_24.png',(1280,30,250,150)),
12:('Fresque_25.png','Fresque_26.png',(1200,390,250,150)),13:('Fresque_27.png','Fresque_28.png',(400,570,250,150)),
14:('Fresque_29.png','Fresque_30.png',(800,570,250,150)),15:('Fresque_31.png','Fresque_32.png',(1200,750,250,150)),
16:('Fresque_33.png','Fresque_34.png',(1200,210,250,150)),17:('Fresque_35.png','Fresque_36.png',(800,390,250,150)),
18:('Fresque_37.png','Fresque_38.png',(800,210,250,150)),19:('Fresque_39.png','Fresque_40.png',(1200,570,250,150)),
20:('Fresque_41.png','Fresque_42.png',(800,750,250,150))}
img = {}
for k in range(len(images)):
img[k] = PhotoImage(file=images[k][0])
can.create_image(images[k][2][0], images[k][2][1], anchor = NW, image=img[k])
bou1= Button(fenetre_princ, text="Quitter", command= fenetre_princ.destroy)
bou1.pack(side=BOTTOM)
fenetre_princ.mainloop()
Merci encore bonne soirée
Je crois comprendre, en lisant ta réponse, que tu imagines que le programme Python travaille sur l'ordi du client.
Par contre, je suppose que les images se trouvent sur le serveur.
Il serait sans doute plus clair que tu décrives ce que tu veux réaliser, avec ou sans Python.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionIl faut qu'elle soit accessible à tous ceux qui possède le lien de la page. Sinon si c'est trop compliqué, mettre le programme, les images et la page html sur un ordi pour qu'on puisse avoir la page web uniquement sur cette ordi.
je ne suis pas certain de comprendre le rôle que tu as donné au programme python dans ce contexte.
quelle est ta compréhension des interactions entre un navigateur et un site?
https://openclassrooms.com/fr/courses/5543061-ecrivez-du-javascript-pour-le-web?archived-source=1916641
C'est important de savoir si tu es en client/serveur ou si tu exécute l'html seulement sur ton ordi. , donc en interne, en local et non pas sur un site web
Car ce genre de truc peut poser des problèmes de sécurité
Moi, j'ai trouvé comment faire avec une fonction Javascript appelée dans la page html, cette fonction lance une commande shell qui lance le Python, puisque dans une fenêtre "invite de commandes ", on peut toujours lancer un programme quel qu'il soit:
mais cela ne fonctionne que sur Internet Explorer, et encore, il donne des avertissements de sécurité avant d'exécuter le code
Sur les autres browsers, même pas de message et rien ne se passe (ou alors il faut peut-être modifier des options de sécurité)
1_ pour exécuter un script Python dans l'invite de commandes, il faut faire:
python "C:\\Utilisateurs\\bline\\Bureau\\Lycée\\Fresque du Climat ISN\\Le réchauffement climatique.py"
et non pas :
cmd /k C:\\Utilisateurs\\.............
cmd invoque l'invite de commandes, or on est déjà dedans !
2_ pour exécuter le fichier html, j fais ceci:

Ensuite, j'ai un message sur la page: je clique "autoriser ..."
Je clique sur le lien Fresque du climat, là un autre message de securite, je clique Oui
et le Python s'exécute
Je fais autoriser :
Je fais oui :
Sinon le chemin est bon pour aller jusqu'au programme ?
C:\\Utilisateurs\\bline\\Bureau\\Lycée\\Fresque du Climat ISN\\Le réchauffement climatique.py
Peux-tu me répondre à ces 3 questions précises :
1_ Ca parait évident, mais me confirmes-tu que lorsque tu double-cliques directement sur ton fichier Le réchauffement climatique.py il s'exécute bien ?
la fenêtre s'ouvre avec les belles images ?
2_ C''est basique aussi mais le fichier Le réchauffement climatique.py est bien dans le dossier
C:\\Utilisateurs\\bline\\Bureau\\Lycée\\Fresque du Climat ISN ?
3_ Dans l'invite de commandes, tu entre exactement cette ligne? :
python "C:\\Utilisateurs\\bline\\Bureau\\Lycée\\Fresque du Climat ISN\\Le réchauffement climatique.py"
au mot près, à l'espace près, au signe près, avec les guillemets " avant le C et après .py ?
Les guillemets sont obligatoires car tu as des espaces dans le nom du fichier et dans un des répertoires du chemin ...
c'est quoi cette petite flèche verte ?????
c'est ça qui manque dans la commande dans l'interpréteur et donc quand on lance de l'html
Moi pour exécuter un Python, je double-clique sur le fichier dans le répertoire et il se lance de suite :
Pas de flèche verte, donc ça marche directement en invite de commandes et avec html …
Dans Windows, généralement, quand on double-clique sur un fichier, il l'ouvre avec l'application qui lui est associée, par exemple sur un fichier Excel, Windows l'ouvre avec l'application Excel, sinon, on peut faire clic-droit -> ouvrir avec … pour l'ouvrir avec une autre application
(ça ne sert à rien, mais si on veut on peut ouvrir un Excel avec Notepad, par exemple …)
En fait, si tu regardes bien le fichier dans mon répertoire dans ma réponse d'avant, la petite icone qui est devant son nom est l'icone Python, donc quand je double-clique, Windows l'ouvre directement avec l'interpréteur Python, pas avec mon éditeur qui est IDLE
Pour éditer mes fichiers Python, justement, je fais clic-droit Edit with IDLE …
Et donc, chez toi, l'appli associée aux fichiers .py est PyScripter qui est ton éditeur Python
donc quand tu double-clique, Windows ouvre ton .py avec PyScripter
Conclusion: pour faire fonctionner ma mécanique avec html, il faudrait que tu modifie dans Windows l'association de fichiers .py avec Python plutôt qu'avec ton éditeur, mais ça, c'est à toi de voir ....
python "C:\\ ...................." dans l'interpréteur de commandes, ca donne quoi ?
- 1
- 2
c'est :
w.run('cmd /c "python Ce PC//C:\\Utilisateurs\\bline\\Bureau\\Lycée\\Fresque du Climat ISN\\Le réchauffement climatique.py"');