bonsoir, lors du test de ce code, j'ai le message d'erreur suivant :

Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python33\lib\tkinter\__init__.py", line 1475, in __call__
return self.func(*args)
File "E:\Matrice d'inertie\mat_matrice_inertie.py", line 72, in prog_barre_pleine
m = mvol*x*y*z # Calcul de la masse
TypeError: can't multiply sequence by non-int of type 'function'

en fait, je voudrais définir une fonction qui me permettrait d'exécuter des lignes de codes lorsque je clique sur le bouton approprié (barre_pleine).
D'après le peu que je comprends, le probleme vient du fait que je multiplie des flottants entre eux (c'est ça?). comment dois je modifier? merci d'avance.

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
 
def prog_barre_pleine():
 
## Données demandées ##
    x = input ("Saisissez une valeur x en m : ") # valeur de x en m (cf figure)
    y = input ("Saisissez une valeur y en m : ") # valeur de y en m (cf figure)
    z = input ("Saisissez une valeur z en m : ") # valeur de z en m (cf figure)
 
    def para_vol(x,y,z):         # Calcul du volume d'une barre pleine
        print ("Volume = ", float(x) * float(y) * float(z), "m3")
 
    m = mvol*x*y*z   # Calcul de la masse
    return (m)
    print ("Masse =", round (m,3), "kg")
 
## Calcul, en son centre de gravité, de la matrice d'inertie d'une barre pleine ##
 
    Ixx = m*(y**2+z**2)/12
    Iyy = m*(x**2+z**2)/12
    Izz = m*(x**2+y**2)/12
    Pxy = 0
    Pxz = 0
    Pyz = 0
 
    def para_mat(mvol,x,y,z):
        m = mvol*x*y*z       # Attention, cette fonction renvoie une matrice
                                # valable dans une base de 3 vecteurs unitaires
                                # dont le premier correpond à la direction de la barre
        return np.array([[Ixx,-Pxy,-Pxz],[-Pxy,Iyy,-Pyz],[-Pxz,-Pyz,Izz]])
    mat_inertie = np.array([[Ixx,-Pxy,-Pxz],[-Pxy,Iyy,-Pyz],[-Pxz,-Pyz,Izz]])
    print (mat_inertie)
 
 
# Création d'un widget Button (bouton barre_pleine)
Barre_pleine = Button(Mafenetre, text ='Barre pleine', command = prog_barre_pleine)
# Positionnement du widget avec la méthode pack()
Barre_pleine.pack(side = LEFT, padx = 5, pady = 5)
 
 
 
# Création d'un widget Button (bouton Quitter)
BoutonQuitter = Button(Mafenetre, text ='Quitter', command = Mafenetre.destroy)
BoutonQuitter.pack(side = LEFT, padx = 5, pady = 5)
 
 
Mafenetre.mainloop()