pyqt5 Qtableview 手动更新 当触发修改数据库时,同时更新Qtableview 视图

在某些案例中,当触发修改数据库内容时,需要同时更新table_View的视图

笔者查询相关内容,未发现Qtable_View的更新函数

解决手动更新的方法,是重新加载Qtabl_view和对应的QSqlTableModel

总代码:如下

import time
import sqlite3
from PyQt5.QtWidgets import *
from PyQt5.QtSql import QSqlTableModel,QSqlDatabase
class Ui_form(QWidget):
    def __init__(self):
        super(Ui_form,self).__init__()
        self.resize(1000,500)
        self.ver = QVBoxLayout(self)
        self.show_table()
        self.buton = QPushButton(self)
        self.buton.setText("ddd")
        self.buton.clicked.connect(self._show)
        self.ver.addWidget(self.buton)
    def model_table(self):#初始化QSqlDatabase的model
        self.db = QSqlDatabase.addDatabase('QSQLITE')#数据库类型
        self.db.setDatabaseName('../data_db/date_of_cj.db')#数据库的相对为宗旨
        self.db.open()
        # 设置订单表格
        self.model_order_1 = QSqlTableModel()
        self.model_order_1.setTable('date_of_order')#表名
        self.model_order_1.setEditStrategy(QSqlTableModel.OnFieldChange)
        self.model_order_1.select()

    # 创建QTable_view视图
    def show_table(self):
        # 初始化model
        self.model_table()
        self.table_view_1 = QTableView(self)
        self.table_view_1.setModel(self.model_order_1)
        #由于在刷新控件上,已经close了Qtable_View,所以要重新show一次。
        self.table_view_1.show()
        self.ver.addWidget(self.table_view_1)
    def _show(self):
        cc = time.time()
        conn = sqlite3.connect("../data_db/date_of_cj.db", isolation_level=None)
        cosur = conn.cursor()
        cosur.execute("update date_of_order set id_state=('%s') WHERE ID=('%s')" % (cc,1))
        self.table_view_1.updateEditorData()
        # 先关闭首次创建的Qtable_view视图
        self.table_view_1.close()
        # 再次调用QTable_view显示函数
        self.show_table()
if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    form = Ui_form()
    form.show()
    sys.exit(app.exec_())

pyqt5 Qtableview 手动更新 当触发修改数据库时,同时更新Qtableview 视图_第1张图片

pyqt5 Qtableview 手动更新 当触发修改数据库时,同时更新Qtableview 视图_第2张图片

你可能感兴趣的:(pyqt5 Qtableview 手动更新 当触发修改数据库时,同时更新Qtableview 视图)