0924QSqlTableModel

import sys
from PyQt5.QtSql import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *


class demoWin(QDialog):
    def __init__(self):
        super(demoWin, self).__init__()
        self.intiUI()

    def closeEvent(self, QCloseEvent):
        self.db.close

    def intiUI(self):
        self.setWindowTitle('0924QSqlTableModel')
        self.resize(430, 450)

        self.view = QTableView()
        self.customTableView()
        self.addBtn = QPushButton('Add Line')
        self.addBtn.clicked.connect(self.addRow)
        self.delBtn = QPushButton('Delete Line')
        self.delBtn.clicked.connect(self.delRow)

        vBox = QVBoxLayout()
        vBox.addWidget(self.view)
        vBox.addWidget(self.addBtn)
        vBox.addWidget(self.delBtn)

        self.setLayout(vBox)

    def addRow(self):
        ret = self.model.insertRows(self.model.rowCount(), 1)
        print('insertRows = %s' % str(ret))

    def findRow(self):
        i = 1
        return i

    def delRow(self, i):
        ret = self.model.removeRow(self.view.currentIndex().row())

    def customTableView(self):
        self.db = QSqlDatabase.addDatabase('QSQLITE')
        self.db.setDatabaseName('D:/OneDrive/CS/PyQt/PyQtdatabase123.db')
        #这样没用,检查不了连接状态
        # if not db.open():
        #     QMessageBox.critical(None, ("无法打开数据库"), ("正文:无法建立到数据库的连接"), QMessageBox.Cancel)
        # else:
        #     QMessageBox.information(None, ("成功打开数据库"), ("正文:已连接到数据库"), QMessageBox.Ok)Ok
        #db.open()
        #设置显示模式
        self.model = QSqlTableModel()
        self.model.setTable('people')
        self.model.setEditStrategy(QSqlTableModel.OnFieldChange)
        self.model.select()
        self.model.setHeaderData(0, Qt.Horizontal, "ID")
        self.model.setHeaderData(1, Qt.Horizontal, "name")
        self.model.setHeaderData(2, Qt.Horizontal, "address")

        self.view.setModel(self.model)
        self.view.setWindowTitle('Table Model(View 1)')


if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = demoWin()
    win.show()
    sys.exit(app.exec_())

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值