Bonjour, je suis actuellement en train de créer une interface avec pyqt dans laquelle j'ai besoin de créer 2 modes : un mode simple et un mode avancé. Pour switcher entre les deux modes, j'ai choisi d'utiliser une QAction dans un menubar :
Cette option peut être soit checké ou non ce qui à pour effet de changer le mode lors du click sur l'option. Mon problème vient lors de cette action. En effet dès que je clique, la fenêtre se recharge bien et l'interface change mais le menu se dédouble (comme on peut l’apercevoir sur le screenshot au dessus). Voici le code lié a la création de ma fenêtre et à la gestion du click :
Merci d'avance 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
47
48
49
50
51
52 class MainWindow(QMainWindow) : def __init__(self) : super(MainWindow,self).__init__() self.modeSimple = True self.createWindow() self.show() def createWindow(self) : self.centralWidget = QWidget(self) self.menu = self.menuBar() self.setCentralWidget(self.centralWidget) self.opt = self.menu.addMenu("Options") self.opt.addAction("Préférences") self.mode = QAction("Mode simplifié",self,checkable = True) self.mode.setChecked(self.modeSimple) self.mode.triggered.connect(self.changeMode) self.opt.addAction(self.mode) self.labelDebut = QLabel("Date de début",self.centralWidget) self.dateEditDebut = QDateTimeEdit(self.centralWidget) self.labelFin = QLabel("Date de fin",self.centralWidget) self.dateEditFin = QDateTimeEdit(self.centralWidget) self.okButton = QPushButton("OK",self.centralWidget) self.okButton.clicked.connect(self.searchResult) [...] if not self.modeSimple : #Cette partie du code fonctionne correctement self.comboPv = QComboBox() self.comboPv.addItems(constant.PV_LIST) self.secondHboxLayout = QHBoxLayout() self.secondHboxLayout.addWidget(self.comboPv) self.vboxLayout.addLayout(self.secondHboxLayout) [...] def changeMode(self,state): if state : self.modeSimple = True self.createWindow() self.show() else : self.modeSimple = False self.createWindow() self.show()
Partager