Bonjour à tous…
Vous sous en seriez douté, mais j’ai un problème*! Avec Python (3.8)
Voici l’ état des lieux.
J’utilise tkinter. Et je programme en «*procédural*» (pas d’usage de Classes)
Je ne peux pas vous donner le script intégral pour la bonne raison qu’il est tellement long que j’ai du le fractionner en plusieurs modules (des GUIs entre autres et des fonctions que j’importe pour alléger le script principal) en outre il y a plusieurs GUIs car trois fenêtres. Bref le script principal a 1500 lignes et les modules externes tous confondus totalisent pas loin de 2000 lignes. Impossible donc de vous donner l’intégralité des scripts car je suppose que les modérateurs me banniraient sans l’ombre d’un remord.
Mais on peut simplifier la chose en restant dans l’abstrait
Mon application (essentiellement des statistiques) utilise une quinzaine de touches claviers, se sont les touches ‘a’,’z’,’e’,’r’,’t’,’q’,’F12’ et les touches ‘KP_0’,’KP_1’, ‘KP_3’,’KP_4’, ‘KP_5’ et ’KP_6’ du pavé numérique. Plus quelques autres pour des réglages de préférences….
Dans le script principal j’ai une fonction (nommée*: mon_filtre(event)
Celle-ci répond aux touches pressées en fonction de contexte. (contexte est une variable pouvant prendre 5 valeurs différentes de 0 à 4) et pour chacune des situations possibles la fonction mon_filtre valide ou invalide l’utilisation de certaines des touches.
Exemple*:
La fonction mon_filtre(event) se présente ainsi*:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 if contexte == 1*: if (lt!= q and lt!= KP_4 and lt!= KP_5 and lt!= q and lt!= KP_6 and lt!= t) return
Et en fin de script on a l’appel en callback classique
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 mon_filtre(event) global x,y,z .. if contexte == 0*: if lt == F12*: if lt == q*: ... if contexte == 4*: return
fen1.bind(«*<KeyPress>*»,mon_filtre)
J’espère que vous avez accepté de me suivre jusqu’ici, et je remercie les courageux qui l’ont fait*!
Maintenant mon problème.
Le script (semble) fonctionner parfaitement. Reste à le tester.
J’ai organisé la chose en ne me servant que de la touche ‘KP_1’ et une pression sur celle-ci appelle la fonction mon_filtre qui aiguille sur les fonctions souhaitées lesquelles vont lire des données sur une base externe.
Vous avez bien lu*: moyennant une petite modification la simple pression de la touche «*KP_1*» suffit pour tester l’application. Mais les résultats ne deviennent intéressants qu’après quelques milliers d’actions sur la touche en question.
Et ma question très simple se résume à ceci*: comment puis_je créer un mode «*AUTO*» qui lance le script indéfiniment*? Et aussi comment interrompre ce mode «*AUTO*» proprement c’est à dire juste avant l’ activation de la touche «*KP_1*»*?
J’ai fait quelques essais(décevants) avec une boucle for x(in range (0, 2000)) ou une while infinie (mais cependant interruptible)
Qui peut venir à mon secours*?
Merci par avance à ceux qui vont me répondre.
Partager