【发布时间】:2020-11-21 05:03:14
【问题描述】:
下面是我正在使用的代码:
from PyQt5 import QtCore, QtGui, QtWidgets, QtSql
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtSql import *
from PyQt5 import uic
import sys
import sqlite3
class UI(QMainWindow):
def __init__(self):
super(UI, self).__init__()
uic.loadUi("tableview.ui", self)
self.show()
db = QSqlDatabase.addDatabase("QSQLITE")
db.setDatabaseName("book.db")
db.open()
DBModel = QSqlQueryModel()
DBModel.setQuery("select * from card",db)
self.tableView.setModel(DBModel)
self.dbmodel = DBModel
self.pushButton.clicked.connect(self.removeRow)
def removeRow(self):
tmodel = QSqlTableModel()
selected = self.tableView.selectedIndexes()
rows = set(index.row() for index in selected)
rows = list(rows)
rows.sort()
first = rows[0]
tmodel.deleteRowFromTable(first)
app = QApplication(sys.argv)
window = UI()
app.exec_()
此代码无法删除 Qtableview 和 SQLite 中的选定行。我正在尝试使用 QSqlTableModel,没有出现错误,但它无法删除行。我错过了一些东西。如何解决这个问题?
【问题讨论】:
-
使用QSqlQueryModel作为表的模型,而不是直接使用QSqlTableModel,有什么具体原因吗?
-
不,实际上我在互联网上搜索过,我试过了。是否可以直接使用 QSqlTableModel 而不使用 QSqlQueryModel ?
标签: python-3.x sqlite pyqt5 qtableview qtsql