Salut ! Je cherche un moyen pour pouvoir disposer l'ensemble de mon layout comme étant responsive, c'est à dire qu'il remplit entièrement / complétement ma nouvelle fenêtre. Par exemple, j'aimerai que mon tableau au lieu d'être en haut à droite, qu'il prenne tout l'espace libre juste en-dessous des boutons.

Ce code correspond à un code publié par une personne sur ce forum que j'ai repris et modifié pour pouvoir répondre à ce que je souhaitais faire

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
import sys
from PyQt5 import (QtWidgets, QtCore, QtSql)
from PyQt5 import *
from PyQt5.QtWidgets import QApplication, QLineEdit
 
 
def ouvrebaseqt(basesql):
 
    db = QtSql.QSqlDatabase.addDatabase("QSQLITE")
    db.setDatabaseName(basesql)
    if not db.open():
        db = None
    return db
 
def fermebaseqt(db):
    if db!=None:
        db.close()
 
class VoirTableSql(QtWidgets.QMainWindow):
 
    def __init__(self, basesql, table, parent=None):
        super().__init__(parent)
 
        self.setGeometry(500, 500, 500, 500) 
 
        self.basesql = basesql
        self.db = ouvrebaseqt(self.basesql)
        if self.db == None:
            QtWidgets.QMessageBox.critical(self, "Ouverture de la base de données", "Erreur d'ouverture")
            self.close()
            sys.exit()
 
        self.table = table
 
        self.model = QtSql.QSqlRelationalTableModel(self, self.db)
 
        self.model.setEditStrategy(QtSql.QSqlRelationalTableModel.OnManualSubmit)
 
        self.vuetable = QtWidgets.QTableView(self)
        self.vuetable.setModel(self.model)
 
        self.vuetable.setSortingEnabled(True)
 
        posit = QtWidgets.QGridLayout()
 
        self.bouton1 = QtWidgets.QPushButton("Enregistrer les modifications dans la table", self)
        self.bouton1.clicked.connect(self.appliquer)
 
        posit.addWidget(self.bouton1, 0, 0)
 
        self.setCentralWidget(QtWidgets.QFrame())
 
        posit.addWidget(self.vuetable, 1, 0)
        self.centralWidget().setLayout(posit)
 
        self.model.setTable(self.table)
        self.model.select()
 
        self.vuetable.setItemDelegate(QtSql.QSqlRelationalDelegate(self.vuetable))
 
        self.vuetable.resizeColumnsToContents()
        self.vuetable.resizeRowsToContents()
 
 
    def appliquer(self):
 
        if self.model.submitAll():
            self.vuetable.resizeColumnsToContents()
            self.vuetable.resizeRowsToContents()
 
            QtWidgets.QMessageBox.information(self, "Enregistrement des modifications", "Enregistrement terminé")
        else:
            QtWidgets.QMessageBox.warning(self, "Enregistrement des modifications", "Erreur: %s" % self.model.lastError().text())
 
    def closeEvent(self, event=None):
 
        fermebaseqt(self.db) 
        event.accept()
Ce code correspond à la fenêtre dans laquelle j'appelle VoirSqlTableau, pour pouvoir afficher les résultats compris dans la table en question, ici Matériel


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
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QLabel, QVBoxLayout, QWidget
from SQL import VoirTableSql
 
import sys
 
class MaterielWindow(QWidget):
 
    def __init__(self):
        super().__init__()
 
        self.setWindowTitle("Gestion des matériaux")
        self.setGeometry(500, 500, 560, 500) 
 
        self.depart = QPushButton("Retour au menu de départ")        
        self.ajouter = QPushButton("Ajouter un nouveau matériel")
        self.supprimer = QPushButton("Supprimer un matériel")
 
        layout = QVBoxLayout()
 
        layout.addWidget(self.depart)
        layout.addWidget(self.ajouter)
        layout.addWidget(self.supprimer)
 
        layout.addWidget(VoirTableSql("Result/StockTelecom", "Materiel"))
 
        self.depart.clicked.connect(self.Main)  
        self.ajouter.clicked.connect(self.Ajouter)  
        self.supprimer.clicked.connect(self.Supprimer)
 
        self.setLayout(layout)