Bonjour,

J'ai fait 3 class :

- la class 'Detection_touche()'
- la class 'Pane()' qui partage la fenêtre en 3 grâce à 'PanedWindow()'
- la class 'Application()' qui devrait 'gérer' les 2 class précédentes

Mais je n'arrive pas à 'récupérer' les touches détectées dans la class 'Application()' pour les mettre dans la fenêtre gauche.

Plus exactement, j'ai essayé d'insérer la touche détectée dans la zone Text de la partie gauche avec la ligne : "f.gauche.insert(END, f)"

Mais voila le seul message que j'obtiens dans la fenêtre gauche : "<__main__.Pane object at 0x02F739F0>


Sauriez-vous comment faire pour qu'à chaque touche détectée je puisse afficher cette dernière dans la fenêtre gauche ?


Voici le code :

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
from tkinter import *
 
 
class Detection_touche(object):
 
    def __init__(self, boss):
        self.fen = boss
        self.flag = 'abc'
        self.fen.bind("<KeyPress>", self.Appui)
        self.fen.bind("<KeyRelease>", self.Relache)
 
 
    #L'appui prolongé sur une touche du clavier appelle plusieurs fois l'évenement
    #La variable "flag" permet d'intercepter le 1er évenement
    def Appui(self, event):
 
        flagTest = event.keysym
 
        if self.flag != flagTest:
            self.flag = flagTest
            print ("appui    : touche=",event.keysym)
        return(self.flag)
        return 'break'
 
 
    def Relache(self, event):
 
        print ("relache  : touche=",event.keysym)
        print('')
 
        self.flag = 'abc'
 
 
    def Resultat(self):
        print('Resultat = ',self.flag)
        return(self.flag)
 
 
# Division de la fenetre en 3 "volets" redimensionnables
class Pane(object):
 
    def __init__(self, boss):
        self.fen = boss
 
        # création 
        self.pane1 = PanedWindow(self.fen, showhandle=1, sashrelief=SUNKEN, orient=HORIZONTAL) ;# ou VERTICAL
        self.pane1.pack(expand='yes',fill="both")
 
        self.pane2 = PanedWindow(self.pane1, showhandle=1, sashrelief=SUNKEN, orient=VERTICAL)
        self.pane1.add(self.pane2)
        ##pane2.pack(expand='yes',fill="both")
 
        self.gauche = Text(self.pane2, bg="red")
        self.milieu = Text(self.pane1, bg="yellow")
        self.droite = Text(self.pane1, bg="white")
 
        self.pane2.add(self.gauche)
        self.pane1.add(self.droite)
        self.pane1.add(self.milieu)
 
 
class Application(object):
 
    def __init__(self):
        self.Ecran = Tk()
        self.Ecran.geometry("300x150")
        f = Pane(self.Ecran)
        g = Detection_touche(self.Ecran)
        # récupération de la touche
        lambda f : g.Appui()
        # et insertion dans la zone texte 'gauche'
        f.gauche.insert(END, f)
        self.Ecran.mainloop()
 
 
app = Application()