Dans les milliers de lignes qui décrivent le fonctionnement de Python, j'ai dû en rater deux ou trois : dont celles qui expliquent mon problème.
Voici un script très élémentaire.
Vous remarquerez les deux lignes 25 et 26 (une seule devrait suffire) qui devraient m'envoyer le même résultat et cela est vrai pour toutes les touches du clavier sauf pour celles du pavé numérique.
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 # ! /usr/bin/env python3 # -*- coding: utf-8 -*- import os import tkinter as tk import os fen1 = tk.Tk() fen1.title('TEST') fen1.geometry('300x400') fen1.configure(bg='black') os.system('xset r off') # on desactive la repetition des touches def ma_fonction(event): # imprime la touche frappée.... laTouche = event.keysym print(laTouche) # la solution barbare que j'ai trouvée... # if laTouche == "KP_End": # laTouche = "KP_1" # print(laTouche) os.system('xset r off') # désactive la variable systeme repetition des touches # les deux options : valider KeyPress ou KeyRelease ... fen1.bind('<KeyPress>', ma_fonction) fen1.bind('<KeyRelease>', ma_fonction) fen1.mainloop() os.system('xset r on') # reactive la répétition des touches
Si je n'utilise que la ligne 25. Tout marche bien
Si je n'utilise que la ligne 26, la touche "KP_1" frappée est reconnue comme étant la touche alternative "KP_End".
Et si je valide les deux lignes, cela me retourne clé frappée "KP_1" clé relachée "KP_End"
Tout ceci montre que Python ne se comporte pas comme un langage interprété 'classique' c'est à dire "instruction par instruction : mais qu'il manipule ( pardon : "pré-compile" un script " à sa sauce" et c'est la recette de cette sauce, que j'aimerais connaître.
Si quelqu'un peut m'expliquer ce que je crois être un phénomène, mais qui n'est dû qu'à mon ignorance, j'en serais ravi. Merci à tous.
PS. J'ai la doc Python à peu près intégrale mais trouver trois lignes parmi des milliers, ce n'est pas évident. Je précise que je suis sous Ubuntu (22.04), avec PyCharm et que j'utilise Python 3.10
Partager