Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pidget météo (Python + HTA) (pour Salvatore ?)

11 réponses
Avatar
Méta-MCI \(MVP\)
Bonsoir !

Voici un "Pidget" (un widget en Python+HTA)
Il faut enregistrer le code-source dans un fichier .HTA (par exemple : meteo.hta)
Double-clic sur le fichier, pour le lancer (ou taper son nom + [Entrée], en invite de commande)
Alt-F4 pour fermer la fenêtre.

Ce truc devrait plaire à Salvatore. Il montre comment remplacer les widgets et autres gadgets, avec
Python, sans installer de Side-bar, de konfabulator, et autres bouffeurs de mémoire.

Rappel : les HTA (HTml Application) ne fonctionnent que sous Windows.
Le fichier ne contient que du Python et du HTML.

@-salutations

Michel Claveau




<hta:application
windowstate="normal"
caption="no"
singleinstance="yes"
/>
<html>
<head>
<script language=Python>

def Init():
self.resizeTo(360,360)
self.moveTo(110,10)

def meteo(num):
obj = document.getElementById('METEODIV')
st = '<a href="http://ponx.org/ponx/guie.htm"><img
src="http://meteo.region-nord.com/webmestre/prev/j'+num+'.jpg" alt="prevision meteo"
style="border:none"> </a>'
obj.innerHTML = st

</script>
</head>

<body bgColor=#FFFFFF background="" scroll=no onload="Init();">
<FORM>
&nbsp;&nbsp;
<input ID="bt1" name="bt1" type="button" style="width:100px" VALUE="Aujourd'hui"
onmousedown="meteo('1')" />
<input ID="bt2" name="bt2" type="button" style="width:100px" VALUE="Demain"
onmousedown="meteo('2')" />
<input ID="bt3" name="bt3" type="button" style="width:100px" VALUE="Après-Demain"
onmousedown="meteo('3')" /><br>

<blockquote>
<DIV id="METEODIV">MMEETTEEOO</DIV>
</blockquote>
</FORM>

<script language=Python>
meteo('1')
</script>

</body>
</html>

10 réponses

1 2
Avatar
Laurent Pointal
<zip>

IE7 me fait un "erreur sur la page" et il ne se passe rien (j'ai bien
les boutons et la division... mais ça coince.

A+

Laurent.
Avatar
Méta-MCI \(MVP\)
Salut !


N'y aurait-il pas un problème d'indentation ? Les "def" doivent commencer en première colonne,
ainsi que la ligne : meteo('1') (vers la fin)

Autre possibilité : est-ce que ton système accepte qu'un .HTA aille ouvrir une image sur Internet ?
(à cause d'un parefeu trop bloquant, d'un désactiveur de scripts, de paramètres interdisant d'avoir
plusieurs domaines dans la même page, etc.)

J'ai essayé depuis deux machines différentes, sans pb ; j'ai un ami chez qui ça fonctionne
également.


Éventuellement, j'ai une version Javascript, qui fait à peu près la même chose. Cela pourrait aider
à trouve si ça vient de Python (plus exactement de "Python-Active-Scripting") ou d'autre chose.

Si tu veux, je peux te l'envoyer par e-mail...


@+

MCI
Avatar
Méta-MCI \(MVP\)
Re !

Je viens de vérifier un truc :

- la version Javascript occupe 13 Mo de RAM
- la version Python occupe 23 Mo

C'est le coût du chargement de l'interpréteur...

@+

MCI
Avatar
Laurent Pointal
Salut !


N'y aurait-il pas un problème d'indentation ? Les "def" doivent
commencer en première colonne, ainsi que la ligne : meteo('1') (vers
la fin)


J'avais déjà corrigé les indentations des defs (mais j'avais oublié
celui de l'appel à meteo().

Autre possibilité : est-ce que ton système accepte qu'un .HTA aille
ouvrir une image sur Internet ? (à cause d'un parefeu trop bloquant,
d'un désactiveur de scripts, de paramètres interdisant d'avoir plusieurs
domaines dans la même page, etc.)


IE7 m'affiche l'alerte sur le script, et je l'autorise. Pas de pare-feu
trop bloquant (j'ai essayé de charger les URLs indiquées dans le script,
ça tourne, j'ai changé le code HTML en un simple <p>xxx</p>, même
problème)...
Note: Le "erreur sur la page" s'affiche en bas, dans la zone de status,
lorsque je clique sur les boutons.

J'ai essayé depuis deux machines différentes, sans pb ; j'ai un ami chez
qui ça fonctionne également.


Peut-être un problème d'enregistrement de mon Python en tant que langage
de script pour les pages web hta... y'a quelque chose à regarder de ce côté?

Au cas où, j'ai réinstallé pywin32 (via easy_install - donc a-priori la
dernière version)... mais ça tourne pas mieux.

Avatar
Méta-MCI \(MVP\)
Re !


Peut-être un problème d'enregistrement de mon Python en tant que langage de script pour les pages
web hta... y'a quelque chose à regarder de ce côté?


Maintenant que tu le dis, oui.
Mais, je ne me rappelle plus où c'est...

Je n'ai jamais utilisé easy-install, mais j'ai dû lancer (au moins une fois) ActivePython. Et il me
semble que l'inscription de Python en tant que langage Active-Scripting est inclut dans cette
install.


Et aussi, regarde si, dans le répertoire
C:Python25Libsite-packageswin32comextaxscriptclient
il ne suffirait pas de lancer le script : pyscript.py


Sinon, je chercherai autre chose.



Merci des tests, et @+


Michel Claveau

Avatar
Laurent Pointal
Re !


Peut-être un problème d'enregistrement de mon Python en tant que
langage de script pour les pages web hta... y'a quelque chose à
regarder de ce côté?


Maintenant que tu le dis, oui.
Mais, je ne me rappelle plus où c'est...

Je n'ai jamais utilisé easy-install, mais j'ai dû lancer (au moins une
fois) ActivePython. Et il me semble que l'inscription de Python en tant
que langage Active-Scripting est inclut dans cette install.


Et aussi, regarde si, dans le répertoire
C:Python25Libsite-packageswin32comextaxscriptclient
il ne suffirait pas de lancer le script : pyscript.py


C:ToolsPython25Libsite-packageswin32comextaxscriptclient>python
pyscript
py
Registered: Python

Done.

Sinon, je chercherai autre chose.
Merci des tests, et @+


Ah, j'ai trouvé plus de détails sur l'indication de l'erreur - faut
double-cliquer sur le panneau jaune /!... sauf que ce @¤*# ouvre un
dialogue avec un champs texte pour les détails et ne permet pas de
copier le contenu de ce champs...

Ligne: 26
Caractère: 1
Erreur: Objet attendu
Code: 0
URL: file:///url vers le document.html

Document qui contient:
<hta:application
windowstate="normal"
caption="no"
singleinstance="yes"
/>
<html>
<head>
<script language=Python>

def Init():
self.resizeTo(360,360)
self.moveTo(110,10)

def meteo(num):
obj = document.getElementById('METEODIV')
st = '<a href="http://ponx.org/ponx/guie.htm"><img
src="http://meteo.region-nord.com/webmestre/prev/j'+num+'.jpg&quot;
alt="prevision meteo" style="border:none"> </a>'
obj.innerHTML = st

</script>
</head>

<body bgColor=#FFFFFF background="" scroll=no onload="Init();">
<FORM>
&nbsp;&nbsp;
<input ID="bt1" name="bt1" type="button" style="width:100px"
VALUE="Aujourd'hui" onmousedown="meteo('1')" />
<input ID="bt2" name="bt2" type="button" style="width:100px"
VALUE="Demain" onmousedown="meteo('2')" />
<input ID="bt3" name="bt3" type="button" style="width:100px"
VALUE="Après-Demain" onmousedown="meteo('3')" /><br>

<blockquote>
<DIV id="METEODIV">MMEETTEEOO</DIV>
</blockquote>
</FORM>

<script language=Python>
meteo('1')
</script>

</body>
</html>


Avatar
Méta-MCI (MVP)
Re !

J'ai, brusquement, un doute ; basé sur le fait que tu parles d'erreur fournie par IE

As-tu bien enregistré le fichier avec l'extension ".hta" (par exemple "meteo.hta") ?

Normalement, pour traiter les HTA, Windows utilise mshta.exe et non iexplore.exe ; avec une
gestion des droits légèrement différente.

@+

MCI
Avatar
Laurent Pointal
Re !

J'ai, brusquement, un doute ; basé sur le fait que tu parles d'erreur
fournie par IE

As-tu bien enregistré le fichier avec l'extension ".hta" (par
exemple "meteo.hta") ?


T'as trouvé.

Ca marche bien mieux avec cette extension.

Bon, j'ai dû tuer mshta pour refermer la fenêtre :-)

Mais ça tourne... je conserve ça sous la main, ça peut être pratique.

Avatar
Méta-MCI (MVP)
Salut !

Pour "tuer" le pidget , y'a + simple : Alt-F4 (cela ferme la fenêtre).

Sinon, n'utiliser que Python dans ce genre de truc, c'est plutôt un cas d'école. En pratique,
Javascript est beaucoup mieux équipé, pour gérer le DOM et les objets HTML.

Mais, comme il est possible de mélanger les deux langages, et d'appeler, depuis javascript, des
fonctions Python (et l'inverse), ça peut devenir intéressant et utile.


Question : penses-tu que ça puisse intéresser des gens, de lire ce genre de truc sur le Wiki ?
Question-2 : ne vaut-il pas mieux laisser ça à Salvatore, qui avait relancé ça sur ce newsgroup ?


@+

MCI
Avatar
Laurent Pointal
Salut !

Pour "tuer" le pidget , y'a + simple : Alt-F4 (cela ferme la fenêtre).


Ah, j'ai essayé le bouton droit sur l'application dans la barre des
tâches... mais y'a pas de menu qui s'affiche.

Sinon, n'utiliser que Python dans ce genre de truc, c'est plutôt un cas
d'école. En pratique, Javascript est beaucoup mieux équipé, pour gérer
le DOM et les objets HTML.

Mais, comme il est possible de mélanger les deux langages, et d'appeler,
depuis javascript, des fonctions Python (et l'inverse), ça peut devenir
intéressant et utile.

Question : penses-tu que ça puisse intéresser des gens, de lire ce genre
de truc sur le Wiki ?


Oui. Y'a tout plein d'usages sous Windows. Combiné à COM...

Question-2 : ne vaut-il pas mieux laisser ça à Salvatore, qui avait
relancé ça sur ce newsgroup ?


Si c'est sur le wiki, tu peux démarrer et lui demander s'il veut
participer en y ajoutant l'expérience qu'il a sur la mise en oeuvre.

A+

Laurent.

1 2