Séparer les QWidget du QMainWindow ?
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:
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:
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:
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:
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 :)