| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- import os
- from PyQt5.QtCore import QSize
- from PyQt5.QtSql import QSqlDatabase, QSqlRelationalTableModel, QSqlRelation, QSqlRelationalDelegate
- from PyQt5.QtWidgets import QApplication, QMainWindow, QTableView
- basedir = os.path.dirname(__file__)
- class MainWindow(QMainWindow):
- def __init__(self):
- super().__init__()
- self.table = QTableView()
- self.db = QSqlDatabase("QSQLITE")
- self.db.setDatabaseName(os.path.join(basedir, "Chinook_Sqlite.sqlite"))
- self.db.open()
- self.model = QSqlRelationalTableModel(db=self.db)
- self.model.setTable("Track")
- self.model.setRelation(2, QSqlRelation("Album", "AlbumId", "Title"))
- self.model.setRelation(
- 3, QSqlRelation("MediaType", "MediaTypeId", "Name"))
- self.model.setRelation(4, QSqlRelation("Genre", "GenreId", "Name"))
- delegate = QSqlRelationalDelegate(self.table)
- self.table.setItemDelegate(delegate)
- self.model.select()
- self.table.setModel(self.model)
- self.setMinimumSize(QSize(1024, 600))
- self.setCentralWidget(self.table)
- if __name__ == "__main__":
- import sys
- app = QApplication(sys.argv)
- window = MainWindow()
- window.show()
- sys.exit(app.exec_())
|