Bonjour,

Je débute en python et j'ai du mal avec self.

J'ai un fichier main.py qui instancie la classe Marche qui va chercher des fonctions dans un fichier initialisation.py
Problème : python me dit qu'il ne connaît pas "valider_ajout_premiere_entite" qui est dans le fichier initialisation.py

main.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/env python3.9
"""
Fonction main
"""
 
import marche
 
if __name__ == "__main__":
    walk = marche.Marche()
    walk.title("marche")
    walk.mainloop()
initialisation.py
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
import tkinter
import tkinter.ttk
 
class Initialisation(tkinter.Tk):
    def init(self):
 
        # caracteristique de la fenetre principale
        self.initialisation = tkinter.Toplevel()
        self.initialisation.geometry("400x200")
        self.initialisation.resizable(width=False, height=False)
 
        self.initialisation.lTitre = tkinter.ttk.Label(self.initialisation, text="Aucune entit├® n'est enregistr├®e, il en faut au moins une.", font='bold')
        self.initialisation.lEntite = tkinter.ttk.Label(self.initialisation, text="Quel est le nom de l'entit├® :")
        self.initialisation.eEntite = tkinter.ttk.Entry(self.initialisation)
        self.initialisation.lDistance = tkinter.ttk.Label(self.initialisation, text="Quelle est la distance parcourue :")
        self.initialisation.sDistance_Entite = tkinter.ttk.Spinbox(self.initialisation, from_=0.0, to=50.0, increment=0.1, width=5)
 
        self.initialisation.bValider = tkinter.ttk.Button(self.initialisation, text="Valider", command=self.initialisation.valider_ajout_premiere_entite)
 
        self.initialisation.lTitre.place(x=10, y=10)
        self.initialisation.lEntite.place(x=10, y=40)
        self.initialisation.eEntite.place(x=10, y=60)
        self.initialisation.lDistance.place(x=10, y=100)
        self.initialisation.sDistance_Entite.place(x=10, y=120)
        self.initialisation.bValider.place(x=10, y=160)
 
    def valider_ajout_premiere_entite(self):
        if self.eEntite.get() == "" or self.sDistance_Entite.get() == "":
            tkinter.messagebox.showerror("Erreur", "Une des 2 valeurs n'a pas ├®t├® correctement renseign├®es")
        else:
            chemin_distance = os.path.join(os.path.dirname(__file__), "distance")
 
            # on ajoute la premiere valeur au fichier distance
            with open(chemin_distance, "w") as data:
                data.write(f"{entite} {self.initialisation.sDistance_Entite.get()}\n")
 
            self.initialisation.destroy()
marche.py
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
import tkinter.ttk
import tkinter
import tkinter.messagebox
import datetime
import os
 
import initialisation
 
class Marche(tkinter.Tk):
    def __init__(self):
        tkinter.Tk.__init__(self)
 
        nom_entite, distance_entite = importation_entite()
 
        if len(nom_entite) == 0:
            initialisation.Initialisation.init(self)
 
def importation_entite():
    nom_entite = ""
    distance_entite = ""
    chemin_distance = os.path.join(os.path.dirname(__file__), "distance")
    with open(chemin_distance, "r") as distance:
        for dist in distance:
            nom_entite += dist.split()[0] + " :\n"
            distance_entite += dist.split()[1] +" km\n"
    return nom_entite, distance_entite
Pourriez-vous m'expliquer ce que je fais mal afin de progresser ?

Merci