Bonjour,
Je m'exerce depuis quelques semaines à l'interface graphique sur python via pyqt et je bloque sur le problème suivant.
Pour simplifier la situation, j'aimerai pouvoir être capable de remplacer un widget par un autre en cours d'utilisation, tout en m'assurant que la position du nouveau widget rester identique à celle de l'ancien.
J'arrive à réassigner la variable qui représente le widget à afficher, par contre je ne sais pas comment faire "la mise à jour". De plus, j'aimerai éviter de repositionner le nouveau widget, je cherche un vrai remplacement.
Voilà un exemple de code qui reproduit la manière dont je m'y prends (class issu de QMainWindow, dans mon problème ce sera sûrement un QWidget)
merci pour votre aide
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 #!/usr/bin/env python3 # -*- coding: utf-8 -*- import sys from PyQt5 import QtWidgets from PyQt5.QtWidgets import QMainWindow, QLabel, QGridLayout, QWidget, QPushButton class HelloWindow(QMainWindow): def __init__(self): QMainWindow.__init__(self) #self.setMinimumSize(QSize(640, 480)) self.setWindowTitle("Hello world") centralWidget = QWidget(self) self.setCentralWidget(centralWidget) gridLayout = QGridLayout(self) centralWidget.setLayout(gridLayout) self.demo_widget = QLabel("Ceci est un QLabel") but = QPushButton("Changer de widget.") but.clicked.connect(self.change) gridLayout.addWidget(but) gridLayout.addWidget(self.demo_widget) def change(self): print("je change de widget !") # j'aimerai éviter d'appeler gridLayout dasn cette fonction self.demo_widget = QPushButton("et voilà un QPushButton") #self.update() #self.show() #self.repaint() if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) mainWin = HelloWindow() mainWin.show() sys.exit(app.exec_())
Partager