Bonjour a tous,

J'ai un problème avec mon code, Le début du programme fonctionne normalement: Le tableau s'ouvre, on peut y entre les valeur et appuyez sur le bouton "calcul" mais la une fenêtre de matplotlib s'ouvre pour afficher les vecteur et réduit le tableau d'entre... J'aimerais qu'il garde la même taille.

Si qq peut m'aider merci beaucoup!
Désolé pour le code "spaghetti"

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
from tkinter import Tk, Entry, Button, Frame, Label, mainloop
import matplotlib.pyplot as plt
root = Tk()
x = []
z = []
t = []
erreur = "La valeur entre n'est pas valide veuillez réessayer"
nbdone = 3 #Fnbdonne()
deltaT = 5 #FdeltaT()
nomX = "X"#input("Quelle est le titre des abscisse?")
nomZ = "Z"#input("Quelle est le titre des ordonnés?")
Tconstr = 0
loop = 1
doneconstr = []
ligneTitre = []
entryListe = []
colonneTitre = [nomX, nomZ]
 
for i in range(nbdone):
    doneconstr = ["Donnée " + str(i+1)]
    ligneTitre = ligneTitre + doneconstr
    Tconstr += deltaT
    t.append(Tconstr)
for i in range(len(t)):
    t[i]=float(t[i])
 
width = len(ligneTitre) + 1
height = len(colonneTitre) + 1
 
#Les fonctions------------------------------------------------------
def getData():
    global loop
    global entryListe
    print("getData")
    x[:] = []
    z[:] = []
    entry_value = []
    for i in range(height - 1):
        for j in range(width - 1):
            if i == 0:
                x.append(entryListe[i][j].get())
            if i == 1:
                z.append(entryListe[i][j].get())
 
    for i in range(len(x)):
        try:
            x[i] = int(x[i])
        except ValueError:
            tableau()
        try:
            z[i] = int(z[i])
        except ValueError:
            tableau()
    loop = 0
    v_x,v_y,temps_v=calcul_vitesses(z,x,t)
    representation_vecteur_vitesse(z,x,v_x,v_y)
    plt.show()
 
def effacer():
    """Efface toutes les données du tableau"""
    for i in range(height - 1):
        for j in range(width - 1):
            entryListe[i][j].delete(0, "end")
 
def calcul_vitesses(abscisses,ordonnees,temps):
    v_x=[]
    v_y=[]
    for n in range(len(abscisses)-1):
        v_x.append((abscisses[n+1]-abscisses[n])/(temps[n+1]-temps[n]))
        v_y.append((ordonnees[n+1]-ordonnees[n])/(temps[n+1]-temps[n]))
    temps=temps[:-1]
    return v_x,v_y,temps
 
def representation_vecteur_vitesse(abscisses,ordonnees,v_x,v_y):
    for i in range(len(v_x)):
        plt.quiver(abscisses[i], ordonnees[i] ,v_x[i] , v_y[i], scale_units='xy',angles='xy', scale=0.3 , headwidth=3 , headlength=4)
    Tracer_des_positions(abscisses,ordonnees)
 
def Tracer_des_positions(abscisses,ordonnees):
    plt.scatter(abscisses,ordonnees,marker='+', color='b')
    plt.title('Veuillez entre les donnée')
    plt.xlabel(nomX)
    plt.ylabel(nomZ)
    plt.xlim(0.6*min(abscisses),1.4*max(abscisses))
 
def Fnbdonne():
    x = 0
    while True:
        try:
            x = int(input("Combien avait vous de donnez?"))
            if x > 1 :
                break
            else:
                print(erreur)
        except ValueError:
            print(erreur)
    return x
 
def FdeltaT():
    x = 0
    while 1:
        try:
            x = float(input("Quelle est le delta T(en seconde)?"))
            if x > 0 :
                break
            else:
                print(erreur)
        except ValueError:
            print(erreur)
    return x
 
def tableau():
    entryListe.clear
    print("Tableau")
    global root
    global loop
    root.title("Tableau de données")
 
    root.geometry("1000x150+150+200")
    frametab = Frame(root, relief = 'groove', borderwidth = 2, padx = 15,
                     pady = 15)
    frametab.grid(row = 0)
    framebouton = Frame(root, relief = 'groove', borderwidth = 2, padx = 15,
                     pady = 15)
    framebouton.grid(row = 1)
    # Production de la première ligne
    for i in range(width):
        if i == 0:
            b = Label(frametab, justify = "center", bg = "#ffffff", width = 12,
                      text = "", relief = "flat")
            b.grid(row = 0, column = i)
        else:
            b = Label(frametab, justify = "center", bg = "#BDEBF1", width = 12,
                      text = ligneTitre[i - 1], relief = "groove")
            b.grid(row = 0, column = i)
    # Production de la première colonne
    for i in range(height - 1):
        b = Label(frametab, justify = "center", bg = "#BDEBF1", width = 12,
                  text = colonneTitre[i], relief = "groove")
        b.grid(row = i + 1, column = 0)
 
    for i in range(height - 1):
        entryListe.append([])
        for j in range(width - 1):
            b = Entry(frametab, justify = "left", bg = "#ffffff", width = 14)
            entryListe[i].append(b)
            b.grid(row = i + 1, column = j + 1)
            b.insert(i, 0)
            entry_value = entryListe[i][j].get()
    boutonCalcul = Button (framebouton, text = "Calcul",
                    command = getData, fg = "red", font = ('Arial', 9))
    boutonCalcul.grid(row = 20, column = 1)
    boutonCalcul.config(width = 10)
 
    boutonEffacer = Button (framebouton, text = "Effacer",
                    command = effacer, fg = "red", font = ('Arial', 9))
    boutonEffacer.grid(row = 20, column = 2)
    boutonEffacer.config(width = 10)
 
    boutonFermer = Button (framebouton, text = "Fermer",
                    command = root.destroy, fg = "red", font = ('Arial', 9))
    boutonFermer.grid(row = 20, column = 4)
    boutonFermer.config(width = 10)
    if loop == 1:
        print("mainloop IN")
        root.mainloop()
        print("mainloop OUT")
 
tableau()