Bonjour à tous.
J'ai un script Python qui,pour faire court, a la structure suivante
Evidemment le traitement des conditions contexte = 1, 2, 3 contient des appels à de nombreuses fonctions et tout ce passe bien en mode manuel normal. Il suffit d'appuyer sur l'une des touches que j'ai choisies de façon arbitraire pour déclencher le traitement souhaité. Tout serait donc parfait si j'en restait là. Mais il se trouve que pour pouvoir exploiter les informations récoltées, j'ai besoin de laisser tourner ce script plusieurs heures. J'ai donc intégré à ce script un mode dit 'AUTO' qui le répète indéfiniment en pressant à chaque fois la touche 1 du pavé numérique à ma place avec quelque part une boucle while qui relance le processus tant que la variable auto est True.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 #! /usr/bin/env python3 # -*- coding: utf-8 -*- import gui import fichiers_6 def filtre(event) global,a,b,c,d lt = str(event.keysym) if lt != "q" and lt != "F12" and lt != KP_1: return if contexte == 1: .... .... return if contexte == 2: .... .... return if contexte == 3: .... .... return # point d'entrée initialisation() # il s'agit d'une fonction qui est dans le module fichiers_6 print('pref ', dicoPref) print('stat ', dicoStat) ... ... ... fen1.bind('<KeyPress>', filtre) fen1.mainloop()
et ca marche. Heu, presque bien car je m'embrouille pour stopper l'essai et si j' interrompt le script brutalement des fichiers qui devraient être écrits ne le sont pas, et ça plante lamentablement.
Alors ma question est très simple
Comment faire pour que l'avant dernière ligne du programme contienne autre chose que ('<KeyPress>') ? Autrement dit comment faire pour que je fasse croire au script que j'ai effectivement tapé KP_1 pour le lancer manuellement ? Après cela il me suffira à l'entrée de la fonction filtre(event) d'autoriser l'entrée d'une touche supplémentaire qui interrompra le mode AUTO.
Je précise que pour rendre le script automatique, j'ai rajouté ceci à la fin
et pour cela supprimé les évènements clavier. Donc comment faire ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 auto = True while auto == True: lt ="KP_1" mon_filtre(lt)
Partager