Hello,

Avec les codes ci-dessous, j'ai bien une fenêtre qui s'ouvre, mais rien ne s'affiche. Savez-vous pourquoi?

app.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
 
#!/usr/bin/env python
import sys
 
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow, QGridLayout
 
from views import Main
 
class TerraSoft(QMainWindow):
    def __init__(self, parent=None):
        super(TerraSoft, self).__init__(parent)
        self.setWindowTitle('TerraSoft')
        self.setWindowState(Qt.WindowMaximized)
 
        # load ihm
        self.main = Main(self)
        # Place ihm
        self._widget = QWidget()
        self._layout = QGridLayout(self._widget)
        self._layout.addWidget(self.main)
        self.setCentralWidget(self._widget)
 
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = TerraSoft()
    ex.show()
    sys.exit(app.exec_())
views.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
33
34
35
36
37
38
39
40
41
42
43
44
 
import sys
 
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, QWidget, qApp, QAction, QSplitter, QMenuBar, QToolBar, QGridLayout, QStatusBar
 
from Family.views import FamilyTreeView
from Specie.views import EventsTableView
 
class Main(QWidget):
    """description of class"""
    def __init__(self, parent):
        super(Main, self).__init__(parent)
 
        # init menu
        menubar = QMenuBar()
        fileMenu = menubar.addMenu('File')
 
        #init toolbar
        exitAct = QAction(QIcon('exit24.png'), 'Exit', self)
        exitAct.setShortcut('Ctrl+Q')
        exitAct.triggered.connect(qApp.quit)
 
        toolbar = QToolBar()
 
        # init elements of widget
        familyTreeView = FamilyTreeView(self)
        eventsTableView = EventsTableView(self)
 
        #init splitters
        HSplitter = QSplitter(Qt.Horizontal)
        VSplitter = QSplitter(Qt.Vertical)
 
        # add elements to splitters
        HSplitter.addWidget(familyTreeView)
        HSplitter.addWidget(eventsTableView)
 
 
        grid = QGridLayout()
        grid.addWidget(HSplitter)
 
        #status bar
        statusBar = QStatusBar().showMessage('Bienvenue dans TerraSoft')
module: family/views.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
33
34
35
36
37
38
 
import sys
 
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QStandardItemModel, QStandardItem
from PyQt5.QtWidgets import QApplication, QWidget, QTreeView
 
families = [
    ("Craspedocephalus", [
        ("puniceus", []),
        ("trigonocephalus", [])
    ]),
    ("Trimeresurus", [
        ("albolabris", [])
    ]),
    ("Elapidé", [])
]
 
class FamilyTreeView(QWidget):
    """description of class"""
    def __init__(self, parent):
        super(FamilyTreeView, self).__init__(parent)
 
        self.familyList = QTreeView()
        self.familyList.setMaximumWidth(300)
 
        self.model = QStandardItemModel()
        self.addItems(self.model, families)
        self.familyList.setModel(self.model)
 
        self.model.setHorizontalHeaderLabels([self.tr("Familles")])
 
    def addItems(self, parent, elements):     
        for text, children in elements:
            item = QStandardItem(text)
            parent.appendRow(item)
            if children:
                self.addItems(item, children)
module: Specie/views.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
 
import sys
 
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QStandardItemModel, QStandardItem
from PyQt5.QtWidgets import QApplication, QWidget, QTableWidget, QTreeView
 
class EventsTableView(QWidget):
    """description of class"""
    def __init__(self, parent):
        super(EventsTableView, self).__init__(parent)
 
        self.eventsTable = QTableWidget()
        self.eventsTable.setColumnCount(3)
        self.eventsTable.setHorizontalHeaderLabels(('Date', 'Catégorie', 'Description'))
Je n'ai pas d'erreur en soit.

Par avance, merci