Bonjour depuis quelques temps je programme en python et quand j'invoque une classe dans un autre fichier via import la classe ne s’exécute pas toujours comme j'aimerais qu'elle le fasse dans ces cas là j'avais trouvé une solution faire une copie de la classe dans mon programme et là tout marche sans problèmes. j'aimerais avoir des éclaircissement sur la différence entre les deux méthodes, j'ai mis l'un de mes programmes qui justement a ce problème(l'un des plus court)
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
import tkinter as tk
 
#0) lettre+chiff 1)chiff 2)num tel francais 3)lettre
class Neoclav:
    def __init__(self,ecran=0):
        self.ecran=ecran
        self.caract=["a","z","e","r","t","y","u","i","o","p","q","s","d","f","g","h","j","k","l","m","w","x","c","v","b","n"]
        self.chiff=["0","1","2","3","4","5","6","7","8","9"]
        self.spe=['eff','raz','esp','','']
        self.result=[]
        self.aff=tk.Tk()
        tk.Button(self.aff,text='quitter',bg='red',fg='white',command=self.aff.destroy).grid(row=0,column=5)
        tk.Button(self.aff,text='envoi',command=self.envoi).grid(row=0,column=4)
        self.cla=tk.Canvas(self.aff,width=600,height=300,bg='cyan')
        self.cla.bind('<Button-1>',self.clav)
        self.cla.grid(row=1,column=0,columnspan=6)
        self.choixecran()
        #print(test)
        self.affcont()
        self.liseuse()   
 
    def choixecran(self):
        if(self.ecran==0):
            self.affichagetot()
        elif((self.ecran==1)or(self.ecran==2)):
            self.affichiff()
        elif(self.ecran==3):
            self.afflettre()
 
    def liseuse(self):
        tk.Label(self.aff,text=self.result,width=50).grid(row=0,column=0,columnspan=3)
        self.aff.after(500,self.liseuse)
 
    def affcont(self):
        j=0
        for self.colonne in range(50,550,50):
            j+=1
            co=self.colonne
            if(self.ecran==0)or(self.ecran==3):
                if(j<=2):
                    self.cla.create_rectangle(co,200,co+30,230,fill='red')
                    self.cla.create_text(co+15,215,text=self.spe[j-1])
                elif(j>8):
                    j=j-7
                    self.cla.create_rectangle(co,200,co+30,230,fill='red')
                    self.cla.create_text(co+15,215,text=self.spe[j])
            else:
                if(j<=2):
                    self.cla.create_rectangle(co,5,co+30,35,fill='red')
                    self.cla.create_text(co+15,20,text=self.spe[j-1])
                elif(j>8):
                    j=j-7
                    co=co-300
                    self.cla.create_rectangle(co,5,co+30,35,fill='red')
                    self.cla.create_text(co+15,20,text=self.spe[j])
 
 
    def affichagetot(self):
        j=0
        for self.ligne in range(50,300,50):
            for self.colonne in range(50,550,50):
                j+=1
                li=self.ligne
                if(li<100):
                    co=self.colonne
                    self.cla.create_rectangle(co,li,co+30,li+30)
                    self.cla.create_text(co+15,li+15,text=self.chiff[j-1])
                elif(li>=200):
                    co=self.colonne+100
                else:
                    co=self.colonne
                if((j>10)and(j<37)):
                    self.cla.create_rectangle(co,li,co+30,li+30)
                    self.cla.create_text(co+15,li+15,text=self.caract[j-11])
 
    def clav(self,event):
        a=0
        b=0
        c=0
        x=event.x
        y=event.y
        # formation des cases de frappes pour chiffres et lettres
        for colonne in range(50,300,50):
            if((y>colonne)and(y<colonne+30)):
                b=colonne//50
        for ligne in range(50,550,50):
            if((x>ligne)and(x<ligne+30)):
                a=ligne//50
        if((a==0)or(b==0)):
            self.result.append('')
        if((b==1)and(self.ecran==0)):#chiffres
            self.result.append(self.chiff[a-1])
        if((self.ecran==0)or(self.ecran==3)):#lettres
            if((b==2)or(b==3)):
                c=10*(b-2)+(a-1)
                self.result.append(self.caract[c])
            elif(b>3):#lettres clavier court
                if((a>2)and(a<9)):#limite dernière ligne lettres
                    c=10*(b-2)+(a-3)
                    self.result.append(self.caract[c])
                elif(a==1):#fonction effacement d'un caratère
                    leng=len(self.result)
                    if(leng>0):
                        sup=leng-1
                        del self.result[sup]
                elif(a==2):#fonction tout effacer
                    self.result=[]            
                elif(a==9):#fonction espace
                    self.result.append(' ')
        elif((self.ecran==1)or(self.ecran==2)):#clavier chiffres
            c=b*3+a
            if(self.ecran==2):
                leng=len(self.result)
                if((leng==2)or(leng==5)or(leng==8)or(leng==11)):
                    self.result.append('.')
            if((c>3)and(c<=12)):
                self.result.append(self.chiff[c-3])
            elif(c==14):
                self.result.append(0)
            elif(c==1):
                leng=len(self.result)
                if(leng>0):
                    sup=self.result[leng-2]
                    self.result.remove(sup)
                    self.result.remove('')
            elif(c==2):
                self.result=[]
            elif(c==3):
                self.result.append(' ')
        if(self.result.count('')!=0):
            self.result.remove('')                
 
    def affichiff(self):
        j=0
        self.cla.configure(width=200,height=250)
        for self.ligne in range(50,250,50):
            for self.colonne in range(50,200,50):
                j+=1
                li=self.ligne
                co=self.colonne
                if(j<10):
                    self.cla.create_rectangle(co,li,co+30,li+30)
                    self.cla.create_text(co+10,li+10,text=self.chiff[j])
                elif(j==10):
                    co=self.colonne+50
                    self.cla.create_rectangle(co,li,co+30,li+30)
                    self.cla.create_text(co+10,li+10,text=self.chiff[0])
 
    def afflettre(self):
        j=0
        for self.ligne in range(100,250,50):
            for self.colonne in range(50,550,50):
                j+=1
                li=self.ligne
                if(li<200):
                    co=self.colonne
                    self.cla.create_rectangle(co,li,co+30,li+30)
                    self.cla.create_text(co+10,li+10,text=self.caract[j-1])
                elif((li>=200)and(j<27)):
                    co=self.colonne+100
                    self.cla.create_rectangle(co,li,co+30,li+30)
                    self.cla.create_text(co+10,li+10,text=self.caract[j-1])
 
    def envoi(self):
        self.getretour()
        self.fermeture()
 
    def fermeture(self):
        self.aff.destroy()
 
    def getretour(self):
        self.le=''
        leng=len(self.result)
        for i in range(0,leng):
            self.le=self.le+self.result[i]
        print(self.result,self.le)
        return self.le
 
Neoclav()