Bonjour à tous,

Je tente vainement de me construire une petite application (Pour tester Python) et je me heurte à une difficulté.
Le principe : Je dispose de trois fenêtres contenant chacune des formulaires.

Mon fichier App _start crée une instance de la classe MainWindowTestFen qui elle même hérite de la première fenêtre.

Mes signaux passent bien de ma première fenêtre à MainWindowTestFen. Par ailleurs, je peux à partir de ma première fenêtre ouvrir une seconde.

C'est là que les choses se compliquent. Je n'arrive pas à récupérer les évènements de la seconde fenêtres.

Depuis deux jours je tourne en rond et n'y arrive pas. Je dois louper un truc dans la logique.

Je vous mets ci-dessous les différents éléments.

Fichier App_Start.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
import sys
from PyQt5.QtWidgets import QApplication
from PyQt5.QtCore import QTranslator
from main_window_TestFen import MainWindowTestFen
 
app = QApplication(sys.argv)
 
translator = QTranslator()
translator.load("testFen en")
app.installTranslator(translator)
 
mainWindowTestFen = MainWindowTestFen()
mainWindowTestFen.show()
 
rc = app.exec_()
sys.exit(rc)
Le fichier main_window_TestFen.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
from PyQt5.QtWidgets import QMainWindow, QFileDialog
from PyQt5.QtCore import pyqtSlot
from Fenetres.FirstWindow import Ui_FirstWindow
from Fenetres.SecondWindow import Ui_SecondWindow
 
class MainWindowTestFen(Ui_FirstWindow, QMainWindow):
    def __init__(self, parent=None):
        super(MainWindowTestFen, self).__init__(parent)
        self.setupUi(self)
 
    @pyqtSlot()
    def on_pushButtonDossier_clicked(self):
        rep = str(QFileDialog.getExistingDirectory(self, "Sélectionnez un dossier a examiner"))
        if rep:
            self.plainTextEditRecap.appendPlainText('Dossier examiné : ' + rep )
 
    @pyqtSlot()
    def on_pushButtonDestination_clicked(self):
        repDest =str(QFileDialog.getExistingDirectory(self, "Choississez un répertoire de destination"))
        if repDest:
            self.plainTextEditRecap.appendPlainText('Dossier de destination: ' + repDest  )
 
    @pyqtSlot()
    def on_pushButtonFormat_clicked(self):
        self.window = QMainWindow()
        self.uiFor = Ui_SecondWindow()
        self.uiFor.setupUi(self.window)
        self.window.show()
 
    @pyqtSlot()
    def on_pushbutton2W_clicked(self):
        print("Bouton 'valide' actionné")
Ma première fenêtre générée avec QtDesigner :
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
from PyQt5 import QtCore, QtGui, QtWidgets
from Fenetres.SecondWindow import Ui_SecondWindow
from PyQt5.QtCore import pyqtSlot
 
 
class Ui_FirstWindow(object):
    def setupUi(self, FirstWindow):
        FirstWindow.setObjectName("FirstWindow")
        FirstWindow.resize(817, 618)
        self.centralwidget = QtWidgets.QWidget(FirstWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
        self.gridLayout.setObjectName("gridLayout")
        self.verticalLayout = QtWidgets.QVBoxLayout()
        self.verticalLayout.setObjectName("verticalLayout")
        spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
        self.verticalLayout.addItem(spacerItem)
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setObjectName("horizontalLayout")
        spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem1)
        self.pushButtonDossier = QtWidgets.QPushButton(self.centralwidget)
        self.pushButtonDossier.setObjectName("pushButtonDossier")
        self.horizontalLayout.addWidget(self.pushButtonDossier)
        spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem2)
        self.pushButtonFormat = QtWidgets.QPushButton(self.centralwidget)
        self.pushButtonFormat.setObjectName("pushButtonFormat")
        self.horizontalLayout.addWidget(self.pushButtonFormat)
        spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem3)
        self.pushButtonMeta = QtWidgets.QPushButton(self.centralwidget)
        self.pushButtonMeta.setObjectName("pushButtonMeta")
        self.horizontalLayout.addWidget(self.pushButtonMeta)
        spacerItem4 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem4)
        self.verticalLayout.addLayout(self.horizontalLayout)
        spacerItem5 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
        self.verticalLayout.addItem(spacerItem5)
        self.plainTextEditRecap = QtWidgets.QPlainTextEdit(self.centralwidget)
        self.plainTextEditRecap.setObjectName("plainTextEditRecap")
        self.verticalLayout.addWidget(self.plainTextEditRecap)
        spacerItem6 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
        self.verticalLayout.addItem(spacerItem6)
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        spacerItem7 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_2.addItem(spacerItem7)
        self.pushButtonDestination = QtWidgets.QPushButton(self.centralwidget)
        self.pushButtonDestination.setObjectName("pushButtonDestination")
        self.horizontalLayout_2.addWidget(self.pushButtonDestination)
        spacerItem8 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_2.addItem(spacerItem8)
        self.pushButtonExport = QtWidgets.QPushButton(self.centralwidget)
        self.pushButtonExport.setObjectName("pushButtonExport")
        self.horizontalLayout_2.addWidget(self.pushButtonExport)
        spacerItem9 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_2.addItem(spacerItem9)
        self.verticalLayout.addLayout(self.horizontalLayout_2)
        spacerItem10 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
        self.verticalLayout.addItem(spacerItem10)
        self.gridLayout.addLayout(self.verticalLayout, 0, 0, 1, 1)
        FirstWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(FirstWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 817, 21))
        self.menubar.setObjectName("menubar")
        FirstWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(FirstWindow)
        self.statusbar.setObjectName("statusbar")
        FirstWindow.setStatusBar(self.statusbar)
 
        self.retranslateUi(FirstWindow)
        QtCore.QMetaObject.connectSlotsByName(FirstWindow)
 
    def retranslateUi(self, FirstWindow):
        _translate = QtCore.QCoreApplication.translate
        FirstWindow.setWindowTitle(_translate("FirstWindow", "First Window"))
        self.pushButtonDossier.setText(_translate("FirstWindow", "Choix du Dossier"))
        self.pushButtonFormat.setText(_translate("FirstWindow", "Sélection des formats"))
        self.pushButtonMeta.setText(_translate("FirstWindow", "Sélection des Meta"))
        self.pushButtonDestination.setText(_translate("FirstWindow", "Destination"))
        self.pushButtonExport.setText(_translate("FirstWindow", "Exporter"))
 
 
 
if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    FirstWindow = QtWidgets.QMainWindow()
    ui = Ui_FirstWindow()
    ui.setupUi(FirstWindow)
    FirstWindow.show()
    sys.exit(app.exec_())
Ma seconde fenêtre générée aussi avec QtDesigner
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
 
from PyQt5 import QtCore, QtGui, QtWidgets
 
class Ui_SecondWindow(object):
    def setupUi(self, SecondWindow):
        SecondWindow.setObjectName("SecondWindow")
        SecondWindow.resize(756, 394)
        SecondWindow.setFocusPolicy(QtCore.Qt.NoFocus)
        self.centralwidget = QtWidgets.QWidget(SecondWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.widget = QtWidgets.QWidget(self.centralwidget)
        self.widget.setGeometry(QtCore.QRect(240, 80, 289, 173))
        self.widget.setObjectName("widget")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.widget)
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout.setObjectName("verticalLayout")
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setObjectName("horizontalLayout")
        spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem)
        self.label2W = QtWidgets.QLabel(self.widget)
        self.label2W.setObjectName("label2W")
        self.horizontalLayout.addWidget(self.label2W)
        self.lineEdit2W = QtWidgets.QLineEdit(self.widget)
        self.lineEdit2W.setObjectName("lineEdit2W")
        self.horizontalLayout.addWidget(self.lineEdit2W)
        spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem1)
        self.verticalLayout.addLayout(self.horizontalLayout)
        spacerItem2 = QtWidgets.QSpacerItem(20, 18, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
        self.verticalLayout.addItem(spacerItem2)
        self.checkBox2W = QtWidgets.QCheckBox(self.widget)
        self.checkBox2W.setObjectName("checkBox2W")
        self.verticalLayout.addWidget(self.checkBox2W)
        spacerItem3 = QtWidgets.QSpacerItem(20, 18, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
        self.verticalLayout.addItem(spacerItem3)
        self.radioButton2W = QtWidgets.QRadioButton(self.widget)
        self.radioButton2W.setObjectName("radioButton2W")
        self.verticalLayout.addWidget(self.radioButton2W)
        spacerItem4 = QtWidgets.QSpacerItem(20, 18, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
        self.verticalLayout.addItem(spacerItem4)
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        spacerItem5 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_2.addItem(spacerItem5)
        self.pushButton2W = QtWidgets.QPushButton(self.widget)
        self.pushButton2W.setObjectName("pushButton2W")
        self.horizontalLayout_2.addWidget(self.pushButton2W)
        spacerItem6 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_2.addItem(spacerItem6)
        self.verticalLayout.addLayout(self.horizontalLayout_2)
        SecondWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(SecondWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 756, 21))
        self.menubar.setObjectName("menubar")
        SecondWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(SecondWindow)
        self.statusbar.setObjectName("statusbar")
        SecondWindow.setStatusBar(self.statusbar)
 
        self.retranslateUi(SecondWindow)
        QtCore.QMetaObject.connectSlotsByName(SecondWindow)
 
        self.pushButton2W.clicked.connect(self.on_button_clicked)
 
    def retranslateUi(self, SecondWindow):
        _translate = QtCore.QCoreApplication.translate
        SecondWindow.setWindowTitle(_translate("SecondWindow", "Second Window"))
        self.label2W.setText(_translate("SecondWindow", "Du Texte : "))
        self.checkBox2W.setText(_translate("SecondWindow", "CheckBox de la 2nd Fenêtre"))
        self.radioButton2W.setText(_translate("SecondWindow", "Bouton radio 2nd Fenêtre"))
        self.pushButton2W.setText(_translate("SecondWindow", "Valider"))
 
 
if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    SecondWindow = QtWidgets.QMainWindow()
    ui = Ui_SecondWindow()
    ui.setupUi(SecondWindow)
    SecondWindow.show()
    sys.exit(app.exec_())

Si vous avez de quoi débloquer mon cerveau je vous en serais reconnaissant.

Bonne journée à tous