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

本文介绍了一个使用Qt和SQLite实现的简单示例,展示了如何在修改数据库内容后更新QTableView视图。通过重新加载QTableView和QSqlTableModel来确保视图与数据库保持同步。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在某些案例中,当触发修改数据库内容时,需要同时更新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_())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值