Bonjour à tous,

JE reviens une nouvelle fois avec une petite question. J'ai construit deux fenêtres via Qt Designer (histoire de me faire la main).

J'ai mis en place une classe main qui ouvre la première fenêtre. Dans une frame de cette première fenêtre je voudrais inséré, une seconde fenêtre.

j'ai compris avec la doc, qui fallait utiliser "promote to", mais je n'arrive pas à comprendre dans quel sens se fait ce "promote to".


J'ai trouvé quelques post sur stackoverflow mais j'avoue ne pas comprendre la logique. Pourriez vous me venir en aide sur cette nouvelle problématique.



Je vous mets le code des trois classes :

La classe main
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
 
import sys
from PySide6.QtCore import *
from PySide6.QtWidgets import *
from PySide6.QtGui import *
 
 
from Ui.wmp import Ui_MainWindow
 
class Window(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super().__init__()
        self._setupUI()
 
    def _setupUI(self):
        self.setupUi(self)
 
    def add_second(self):
        pass
 
if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = Window()
    win.show()
    sys.exit(app.exec())

La classe principale qui doit recevoir la seconde
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
 
# -*- coding: utf-8 -*-
 
from PySide6.QtCore import *  # type: ignore
from PySide6.QtGui import *  # type: ignore
from PySide6.QtWidgets import *  # type: ignore
 
 
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        if not MainWindow.objectName():
            MainWindow.setObjectName(u"MainWindow")
        MainWindow.setWindowModality(Qt.NonModal)
        MainWindow.resize(891, 603)
        MainWindow.setStyleSheet(u"background-color: #31363B;")
        self.centralwidget = QWidget(MainWindow)
        self.centralwidget.setObjectName(u"centralwidget")
        self.centralwidget.setStyleSheet(u"QFrame	#frame_left, #frame_right {\n"
"	border-style: solid;\n"
"	border-width: 2px;\n"
"	border-color: rgb(175, 175, 175);\n"
"}\n"
"\n"
"QPushButton {\n"
"	background-color: #6086D1;\n"
"	border-radius: 10px;\n"
"	border-color: rgb(255, 255, 255);\n"
"	font-size:18px;\n"
"	color: #ffffff;\n"
"}")
        self.horizontalLayout = QHBoxLayout(self.centralwidget)
        self.horizontalLayout.setObjectName(u"horizontalLayout")
        self.main_frame = QFrame(self.centralwidget)
        self.main_frame.setObjectName(u"main_frame")
        self.main_frame.setStyleSheet(u"")
        self.main_frame.setFrameShape(QFrame.StyledPanel)
        self.main_frame.setFrameShadow(QFrame.Raised)
        self.horizontalLayout_2 = QHBoxLayout(self.main_frame)
        self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
        self.frame_left = QFrame(self.main_frame)
        self.frame_left.setObjectName(u"frame_left")
        sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.frame_left.sizePolicy().hasHeightForWidth())
        self.frame_left.setSizePolicy(sizePolicy)
        self.frame_left.setMinimumSize(QSize(130, 0))
        self.frame_left.setMaximumSize(QSize(100, 16777215))
        self.frame_left.setStyleSheet(u"")
        self.frame_left.setFrameShape(QFrame.StyledPanel)
        self.frame_left.setFrameShadow(QFrame.Raised)
        self.pushButton = QPushButton(self.frame_left)
        self.pushButton.setObjectName(u"pushButton")
        self.pushButton.setGeometry(QRect(10, 430, 110, 71))
        self.pushButton.setMinimumSize(QSize(110, 0))
        self.pushButton.setStyleSheet(u"")
        self.Search = QPushButton(self.frame_left)
        self.Search.setObjectName(u"Search")
        self.Search.setGeometry(QRect(10, 10, 110, 71))
        self.Search.setMinimumSize(QSize(110, 0))
        self.Search.setStyleSheet(u"")
        self.destroy = QPushButton(self.frame_left)
        self.destroy.setObjectName(u"destroy")
        self.destroy.setGeometry(QRect(10, 90, 110, 71))
        self.destroy.setMinimumSize(QSize(110, 0))
        self.destroy.setStyleSheet(u"")
 
        self.horizontalLayout_2.addWidget(self.frame_left)
 
        self.frame_right = QFrame(self.main_frame)
        self.frame_right.setObjectName(u"frame_right")
        self.frame_right.setFrameShape(QFrame.StyledPanel)
        self.frame_right.setFrameShadow(QFrame.Raised)
 
        self.horizontalLayout_2.addWidget(self.frame_right)
 
 
        self.horizontalLayout.addWidget(self.main_frame)
 
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QMenuBar(MainWindow)
        self.menubar.setObjectName(u"menubar")
        self.menubar.setGeometry(QRect(0, 0, 891, 22))
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QStatusBar(MainWindow)
        self.statusbar.setObjectName(u"statusbar")
        MainWindow.setStatusBar(self.statusbar)
 
        self.retranslateUi(MainWindow)
 
        QMetaObject.connectSlotsByName(MainWindow)
    # setupUi
 
    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MD5 verify", None))
        self.pushButton.setText(QCoreApplication.translate("MainWindow", u"Renommer", None))
        self.Search.setText(QCoreApplication.translate("MainWindow", u"Chercher", None))
        self.destroy.setText(QCoreApplication.translate("MainWindow", u"Effacer", None))
    # retranslateUi


la seconde classe

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
 
# -*- coding: utf-8 -*-
from PySide6.QtCore import *  # type: ignore
from PySide6.QtGui import *  # type: ignore
from PySide6.QtWidgets import *  # type: ignore
 
 
class Ui_Dialog(object):
    def setupUi(self, Dialog):
        if not Dialog.objectName():
            Dialog.setObjectName(u"Dialog")
        Dialog.resize(210, 182)
        self.verticalLayout = QVBoxLayout(Dialog)
        self.verticalLayout.setObjectName(u"verticalLayout")
        self.lineEdit = QLineEdit(Dialog)
        self.lineEdit.setObjectName(u"lineEdit")
 
        self.verticalLayout.addWidget(self.lineEdit)
 
        self.pushButton = QPushButton(Dialog)
        self.pushButton.setObjectName(u"pushButton")
 
        self.verticalLayout.addWidget(self.pushButton)
 
 
        self.retranslateUi(Dialog)
 
        QMetaObject.connectSlotsByName(Dialog)
    # setupUi
 
    def retranslateUi(self, Dialog):
        Dialog.setWindowTitle(QCoreApplication.translate("Dialog", u"Dialog", None))
        self.pushButton.setText(QCoreApplication.translate("Dialog", u"PushButton", None))
    # retranslateUi

Bonne fin de journée à tous