Bonjour à tous,

J'ai un petit problème avec le passage de variables entre classes et je n'arrive pas à trouver de solutions !

J'ai 3 classes différentes (qu'on pourrait appeler start, main et save).
La classe start me permet de récupérer un chemin d'accès (C:/Users/...). Une fois le chemin récupéré la fenètre start se ferme et lance la fenètre main.
La classe main sert à faire une mesure stocké sous forme de liste et une fois la mesure faites ouvre une fenètre modale lié à la classe save.

Ce que j'aimerais faire c'est récupérer dans ma classe save le chemin du fichier et la liste pour les sauvegarder. Mais je n'ai aucune idée de comment faire ça !
J'ai essayé les signaux pyqtSignal, les variables globales, les self. ... mais rien ne fonctionne.

Quelqu'un pourrait m'orienter sur une piste pour faire ce que je souhaite ?

Merci d'avance !

Code start : 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
 
import os
 
from PyQt5.QtWidgets import QWidget, QApplication, QFileDialog
from PyQt5 import uic
 
import Main
 
class start(QWidget):
 
    def __init__(self, parent = None):
        super().__init__()
        uic.loadUi(__file__.split('.py')[0] + '.ui', self)
 
        self.pushButtonStart.clicked.connect(self.onPushButtonStart)   
 
    def onPushButtonStart(self):
 
        folder_name = self.lineEditUsername.text()
 
        dialog = QFileDialog()
        folder_path = dialog.getExistingDirectory(None, "Select Folder")
        folder_path_total = folder_path + os.path.sep + folder_name
 
 
        if os.path.isdir(folder_path_total) == True:
            self.startMainWindow = Main.main()
            self.close()
            self.startMainWindow.show()
 
        else:
            os.mkdir(folder_path_total)
            self.startMainWindow = Main.main()
            self.close()
            self.startMainWindow.show()

Code main : 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
 
 
### Import des classes pour les fenetres pop-up ###############################
 
import Save
 
###############################################################################
 
### Import des modules pour la gestion de Qt ##################################
 
from PyQt5 import uic, QtCore
from PyQt5.QtWidgets import QMainWindow, QApplication, QFileDialog
 
###############################################################################
 
 
### Partie interface graphique et controle ####################################
 
class MainWindowFluorescenceApplication(QMainWindow):
 
    def __init__(self,parent = None):
        super().__init__()
        uic.loadUi(__file__.split('.py')[0] + '.ui', self)
 
        ### Connexion signaux-slot ######################
 
        self.pushButtonAcquisitionSpectre.clicked.connect(self.onPushButtonAcquisitionSpectreClicked)
 
        #################################################
 
    ### Méthode des signaux-slot ##################################
 
    def onPushButtonAcquisitionSpectreClicked(self, filename):
 
            ### Acquisition des données avec le spectro ###############
 
            Wavelengths = spec.wavelengths()
            Intensities = spec.intensities()
 
            Data =[Wavelengths, Intensities]
            Data = list(Data)
 
            #### Sauvegarde des données ################################
 
            self.saveData = Save.save()
            self.saveData.setWindowModality(QtCore.Qt.ApplicationModal)
            self.saveData.show()

Code save : 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
 
import os
import json
 
from PyQt5.QtWidgets import QWidget, QFileDialog
from PyQt5 import uic
 
import Start
import Main
 
class save(QWidget):
 
    def __init__(self, parent = None):
        super().__init__()
        uic.loadUi(__file__.split('.py')[0] + '.ui', self)
 
        self.pushButtonSave.clicked.connect(self.onPushButtonSaveClicked)
        self.pushButtonCancel.clicked.connect(self.onPushButtonCancelClicked)     
 
    def onPushButtonSaveClicked(self):
 
        a = self.fenetre_demarrage.StartingSoftware.folder_path_sgn.connect()
        print(a)
 
#        save_name = folder_path_total + os.path.sep + self.lineEditFilename.text()
#        print(save_name)
#        file = open(save_name+'.json', 'w+')
#        json.dump(Data, file)
#        print(save_name)
#        print(Data)
 
#        self.save_filename.emit(self.lineEditFilename.text())
        self.close()
 
    def onPushButtonCancelClicked(self):
        self.close()