Объясните пожалуйста мне, один нюанс в табличной модели. Я уже который день голову ломаю
Начну с самого начала вернувшись обратно к своей любимой теме, “Создание СУБД”….. Изучаю я по книге: Прохорёнок Н.А. Дронов В.А. - 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())
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)