Это мой код для извлечения данных из базы данных и создания табличного представления с использованием PyQt5.По сути, я импортирую его в другой файл и вызываю через кнопку.Вывод загружает мою базу данных и показывает ее в правильном формате таблицы.Он обновляется правильно.Функция удаления также работает правильно.Но функция добавления не работает, вылетает приложение.
import sys
from PyQt5 import QtSql, QtCore
from PyQt5.QtWidgets import *
class crud():
def initializeModel(self,model):
self.model.setTable('student')
self.model.setEditStrategy(QtSql.QSqlTableModel.OnFieldChange)
self.model.select()
self.model.setHeaderData(0, QtCore.Qt.Horizontal, "Roll No")
self.model.setHeaderData(1, QtCore.Qt.Horizontal, "Name")
self.model.setHeaderData(2, QtCore.Qt.Horizontal, "Father Name")
self.model.setHeaderData(3, QtCore.Qt.Horizontal, "Email")
self.model.setHeaderData(4, QtCore.Qt.Horizontal, "Mobile")
self.model.setHeaderData(5, QtCore.Qt.Horizontal, "Department")
self.model.setHeaderData(6, QtCore.Qt.Horizontal, "Section")
self.model.setHeaderData(7, QtCore.Qt.Horizontal, "Password")
def createView(self,model):
self.view=QTableView()
self.view.setToolTip("Change the fields")
self.view.setModel(model)
return self.view
def addrow(self,model):
print(model.rowcount())
ret=(model.insertRows(model.rowcount(),1))
print(ret)
def findrow(self,i):
delrow=i.row()
print(delrow)
def datastudent(self):
self.db=QtSql.QSqlDatabase.addDatabase('QSQLITE')
self.db.setDatabaseName('atdata.db')
self.model=QtSql.QSqlTableModel()
delrow=-1
self.initializeModel(self.model)
self.View1=self.createView("Table Model",self.model)
self.View1.clicked.connect(self.findrow)
self.dlg=QDialog()
self.layout=QVBoxLayout()
self.layout.addWidget(self.View1)
self.button=QPushButton("Add a row")
self.button.clicked.connect(self.addrow)
self.layout.addWidget(self.button)
self.btn1=QPushButton("Delete a Row")
self.btn1.clicked.connect(lambda :self.model.removeRow(self.View1.currentIndex().row()))
self.layout.addWidget(self.btn1)
self.dlg.setLayout(self.layout)
self.dlg.setWindowTitle("My Database")
self.dlg.setGeometry(100, 100, 1100, 600)
self.dlg.exec_()
Этот код функции добавления, и я столкнулся с проблемой в нем.Эта функция предназначена для добавления новой строки в базу данных для вставки данных.
def addrow(self,model):
print(model.rowcount())
ret=(model.insertRows(model.rowcount(),1))
print(ret)
Примечание: - Этот код работал правильно, но до того, как я определил его в классе, потому что я хочу его импортировать.Мой оригинальный код здесь , зацените для справки.Пожалуйста помоги.Заранее спасибо.