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

Python - HTA probleme d'affichage

5 réponses
Avatar
Salvatore
Bonjour la communauté

J'ai un soucis d'affiche de message dans un de mes scripts HTA
Voici le problème

...
...
def setValue(divid,data):
elt = document.getElementById(divid)
elt.innerHTML = data

def infoSysteme():
setValue("info","Veuillez patienter") #mise du div "info"
c = os.popen(cmdDisk%Serveur).read()
setValue('tabcentre',c)
...
...

Lorque j'appelle la focntion 'infoSysteme'
le div 'info' se met à jour une fois que la fonction
'infoSysteme' est terminée.

Merci pour votre aide

Cordialement

Salvatore

5 réponses

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


Si tu remplaces les fonctions Python par des fonctions Javascript, tu auras le même comportement.

Conclusion, ce n'est pas un problème Python, mais un problème HTA ; plus exactement HTML, car ça se
produit également dans des pages HTML. Mais, ce comportement est conforme aux normes du Web

Pour contourner cela, il te faudra certainement jongler avec la gestion des évènements des pages
HTML (ou HTA).
Un moyen (assez) simple, c'est d'isoler les fonctions d'affichage, et de les appeler avec des
setTimeout.


@-salutations

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


Je t'ai trouvé une solution, assez simple, et plus efficace que l'équipe de France de rugby face à
l'équipe de la Rose...

Après chaque appel à une fonction qui écrit (setValue), insère cette ligne :
win32gui.PumpWaitingMessages()
(rappel : mettre import win32gui qq. part avant)

Cela suffit à laisser la main à Windows, le temps de rafraîchir l'affichage.


@-salutations

Michel Claveau
Avatar
Salvatore
Tu es mon sauveur :-)

Merci beaucoup

Salvatore


Re !


Je t'ai trouvé une solution, assez simple, et plus efficace que l'équipe
de France de rugby face à l'équipe de la Rose...

Après chaque appel à une fonction qui écrit (setValue), insère cette
ligne :
win32gui.PumpWaitingMessages()
(rappel : mettre import win32gui qq. part avant)

Cela suffit à laisser la main à Windows, le temps de rafraîchir
l'affichage.


@-salutations

Michel Claveau








Avatar
Méta-MCI \(MVP\)
Tu es mon sauveur :-)


Soyons modestes : j'ai, peut-être, simplement sauvé ta (bonne) nuit de sommeil...

Avatar
Salvatore
Grâce à Michel voici
la solution:

def setPauseMsg(started=0):
if started == 1:
WaitCursor()
setValue("tabcentreInfo","Veuillez Patienter...")
else:
Pointer()
win32gui.PumpWaitingMessages()

def infoSysteme():
setPauseMsg(1)
setValue("tabcentre","")
c = os.popen(cmdSystem%Server).read()
setValue('tabcentre',c)
setPauseMsg(0)

Cordialement

Salvatore