import sys
from PyQt5.QtSql import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
class demoWin(QDialog):
def __init__(self):
super(demoWin, self).__init__()
self.intiUI()
def closeEvent(self, QCloseEvent):
self.db.close
def intiUI(self):
self.setWindowTitle('0924QSqlTableModel')
self.resize(430, 450)
self.view = QTableView()
self.customTableView()
self.addBtn = QPushButton('Add Line')
self.addBtn.clicked.connect(self.addRow)
self.delBtn = QPushButton('Delete Line')
self.delBtn.clicked.connect(self.delRow)
vBox = QVBoxLayout()
vBox.addWidget(self.view)
vBox.addWidget(self.addBtn)
vBox.addWidget(self.delBtn)
self.setLayout(vBox)
def addRow(self):
ret = self.model.insertRows(self.model.rowCount(), 1)
print('insertRows = %s' % str(ret))
def findRow(self):
i = 1
return i
def delRow(self, i):
ret = self.model.removeRow(self.view.currentIndex().row())
def customTableView(self):
self.db = QSqlDatabase.addDatabase('QSQLITE')
self.db.setDatabaseName('D:/OneDrive/CS/PyQt/PyQtdatabase123.db')
#这样没用,检查不了连接状态
# if not db.open():
# QMessageBox.critical(None, ("无法打开数据库"), ("正文:无法建立到数据库的连接"), QMessageBox.Cancel)
# else:
# QMessageBox.information(None, ("成功打开数据库"), ("正文:已连接到数据库"), QMessageBox.Ok)Ok
#db.open()
#设置显示模式
self.model = QSqlTableModel()
self.model.setTable('people')
self.model.setEditStrategy(QSqlTableModel.OnFieldChange)
self.model.select()
self.model.setHeaderData(0, Qt.Horizontal, "ID")
self.model.setHeaderData(1, Qt.Horizontal, "name")
self.model.setHeaderData(2, Qt.Horizontal, "address")
self.view.setModel(self.model)
self.view.setWindowTitle('Table Model(View 1)')
if __name__ == '__main__':
app = QApplication(sys.argv)
win = demoWin()
win.show()
sys.exit(app.exec_())