Приветствую Друзья!!!
Объясните пожалуйста мне, один нюанс в табличной модели. Я уже который день голову ломаю
Начну с самого начала вернувшись обратно к своей любимой теме, "Создание СУБД"..... Изучаю я по книге: Прохорёнок Н.А. Дронов В.А. - Python 3 и PyQt6 Разработка приложений.
там указан листинг:
from PyQt6 import QtCore, QtGui, QtWidgets, QtSql
import sys
def addRecord():
if stm.value("category") == []:
# Вставляем пустую запись, которую пользователь сможет ввести нужные данные
stm.insertRecord(stm.rowCount())
def deleteRecord():
# Удаляем запись из модели
stm.removeRecord(tv.currentIndex().row())
stm.select
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget()
window.setWindowTitle("Добавление и удаление записи")
# Устанавливаем соединение с базой данных
con = QtSql.QSqlDatabase.addDatabase("QSQLITE")
con.setDatabaseName("data.sqlite")
con.open()
# Создаем модель
stm = QtSql.QSqlTableModel(parent=window)
stm.setTable("category")
stm.sort(1, QtCore.Qt.SortOrder.AscendingOrder)
stm.select()
# Задает заголовки
stm.setHeaderData(0, QtCore.Qt.Orientation.Horizontal, "Номер записи")
stm.setHeaderData(1, QtCore.Qt.Orientation.Horizontal, "Категория")
vbox = QtWidgets.QVBoxLayout()
tv = QtWidgets.QTableView()
tv.setModel(stm)
tv.setColumnWidth(1, 60)
tv.setColumnWidth(2, 150)
vbox.addWidget(tv)
btnAdd = QtWidgets.QPushButton("&Добавить запись")
btnAdd.clicked.connect(addRecord)
vbox.addWidget(btnAdd)
btnDel = QtWidgets.QPushButton("&Удалить запись")
btnDel.clicked.connect(deleteRecord)
vbox.addWidget(btnDel)
window.setLayout(vbox)
window.resize(400, 250)
window.show()
sys.exit(app.exec())
Проблема в том, что если таблице нет записей то при нажатии на кнопке, "&Добавить запись", таблица не переходит в режим редактирования и вsходит сообщение:
Process finished with exit code -1073740791 (0xC0000409).
И как не меняй функцию:
"addRecord"
if stm.value("category") == []:
# Вставляем пустую запись, которую пользователь сможет ввести нужные данные
stm.insertRecord(stm.rowCount())
или
if stm.Null == True:
# Вставляем пустую запись, которую пользователь сможет ввести нужные данные
stm.insertRecord(stm.rowCount())
все равно выходит сообщение:
Process finished with exit code -1073740791 (0xC0000409)