tableview_tablemodel.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import os
  2. from PyQt5.QtCore import QSize, Qt
  3. from PyQt5.QtSql import QSqlDatabase, QSqlTableModel
  4. from PyQt5.QtWidgets import QApplication, QMainWindow, QTableView
  5. basedir = os.path.dirname(__file__)
  6. class MainWindow(QMainWindow):
  7. def __init__(self):
  8. super().__init__()
  9. self.table = QTableView()
  10. self.db = QSqlDatabase("QSQLITE")
  11. self.db.setDatabaseName(os.path.join(basedir, "Chinook_Sqlite.sqlite"))
  12. self.db.open()
  13. self.model = QSqlTableModel(db=self.db)
  14. self.model.setTable("Track")
  15. # idx = self.model.fieldIndex("Milliseconds")
  16. # self.model.setSort(idx, Qt.DescendingOrder)
  17. column_titles = {
  18. "Name": "Name",
  19. "Composer": "Composer",
  20. "AlbumId": "Album (ID)",
  21. "MediaTypeId": "Media Type (ID)",
  22. "GenreId": "Genre (ID)",
  23. }
  24. for n, t in column_titles.items():
  25. idx = self.model.fieldIndex(n)
  26. self.model.setHeaderData(idx, Qt.Horizontal, t)
  27. # self.model.setHeaderData(1, Qt.Horizontal, "Name")
  28. self.model.select()
  29. # self.model.setEditStrategy(QSqlTableModel.OnRowChange)
  30. self.table.setModel(self.model)
  31. self.setMinimumSize(QSize(1024, 600))
  32. self.setCentralWidget(self.table)
  33. if __name__ == "__main__":
  34. import sys
  35. app = QApplication(sys.argv)
  36. window = MainWindow()
  37. window.show()
  38. sys.exit(app.exec_())