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()
Partager