0
私はPyQt5を使ってアプリケーションを作成しています。問題は、自分のウィンドウが表示されますが、ウィジェットがなく(つまり、Main
クラスがなく、メニュー、ツールバーなどがなくても)、まだ空です。私はPython-3.6とPyQt5、Windows 10環境を使用しています。ここでPyQt5:ウィジェットのないメインウィンドウ
は私のコードです:
app.py:
#!/usr/bin/env python
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, qApp, QWidget, QMainWindow, QGridLayout, QMenuBar, QAction, QToolBar, QStatusBar
from views import Main
class TerraSoft(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.setWindowTitle('TerraSoft')
self.setWindowState(Qt.WindowMaximized)
# 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()
# load ihm
main = Main()
centWidget = QWidget()
# widget centralizer
window = QGridLayout()
window.addWidget(main, 0, 0)
centWidget.setLayout(window)
self.setCentralWidget(centWidget)
#status bar
statusBar = QStatusBar().showMessage('Bienvenue dans TerraSoft')
# show ihm
self.show()
main.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = TerraSoft()
ex.show()
sys.exit(app.exec_())
.views(メイン)
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, *args):
QWidget.__init__(self, *args)
# 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)
マイモジュールfamily.views
(私は将来的に.modelsを追加したいのですが、他のものの1つ):
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, *args):
QWidget.__init__(self, *args)
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)
と私のモジュールspecie.views
:あなたは、以下の結果を確認でき
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QStandardItemModel, QStandardItem
from PyQt5.QtWidgets import QApplication, QWidget, QTableWidget, QTreeView
class EventsTableView(QTableWidget):
"""description of class"""
def __init__(self, *args):
QTableWidget.__init__(self, *args)
self.eventsTable = QTableWidget()
self.eventsTable.setColumnCount(3)
self.eventsTable.setHorizontalHeaderLabels(('Date', 'Catégorie', 'Description'))
:
class Main(QWidget):
def __init__(self, *args):
QWidget.__init__(self, *args)
familyTreeView = FamilyTreeView(self)
eventsTableView = EventsTableView(self)
HSplitter = QSplitter(Qt.Horizontal)
HSplitter.addWidget(familyTreeView)
HSplitter.addWidget(eventsTableView)
HSplitter.setStretchFactor(1, 1)
grid = QGridLayout()
grid.addWidget(HSplitter)
self.setLayout(grid)
このTerraSoft
クラス:
ありがとう!それは仕事ですが、データはありません(ツリービューは私の家族に表示されません。グリッドビューには列は表示されません: http://www.hostingpics.net/viewer.php?id=668763result.png –
@ Y.Berthoud。私はいくつかの修正で私の答えを更新しました – ekhumoro
試して、それはうまくいきました!私は今統計情報とpymongoの統合のためにグラフを追加します:)私はいくつかの助けが必要な場合、 ) どうもありがとう ! –