pyqt5 QSqlDatabase Qtableview 返回选择表格数据 数据的删除和增加

# -*- coding: utf-8 -*-

'''
    【简介】
   PyQt5中  处理database 例子
'''
import sys,time
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtSql import QSqlDatabase, QSqlTableModel
from PyQt5.QtCore import Qt,pyqtSignal
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Form(QObject):
    single_del_row = pyqtSignal()
    def __init__(self,parent =None):
        super(Ui_Form,self).__init__(parent)
        #自定义信号
        self.single_del_row.connect(self.show_message_del_row)

        db = QSqlDatabase.addDatabase('QSQLITE')  # addDatabase设定链接数据库格式为SQLITE即sqlite3和以上的版本
        db.setDatabaseName('../data_db/date_of_cj.db') # 设定链接数据库的名称
        self.model = QSqlTableModel()
        self.delrow = 1 # 设置读取开始位置
        #######################
        #初始化model
        self.model.setTable('date_of_01cj')
        self.model.setEditStrategy(QSqlTableModel.OnFieldChange)
        self.model.select()
        self.model.setHeaderData(0, Qt.Horizontal, "车间编号")
        self.model.setHeaderData(1, Qt.Horizontal, "发酵罐编号")
        self.model.setHeaderData(2, Qt.Horizontal, "温度计编号")
        self.model.setHeaderData(3, Qt.Horizontal, "二维码图片")
        #############################
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(500, 300)
        self.horizontalLayout = QtWidgets.QHBoxLayout(Form)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.tabWidget = QtWidgets.QTabWidget(Form)
        self.tabWidget.setObjectName("tabWidget")
        self.tab = QtWidgets.QWidget()
        self.tab.setObjectName("tab")
        self.create_view()

        self.pushButton_5 = QtWidgets.QPushButton(self.tab)
        self.pushButton_5.setGeometry(QtCore.QRect(220, 230, 75, 23))
        self.pushButton_5.setObjectName("pushButton_5")
        self.tabWidget.addTab(self.tab, "")
        self.tab_2 = QtWidgets.QWidget()
        self.tab_2.setObjectName("tab_2")
        self.widget = QtWidgets.QWidget(self.tab_2)
        self.widget.setGeometry(QtCore.QRect(20, 12, 331, 241))
        self.widget.setObjectName("widget")
        self.gridLayout = QtWidgets.QGridLayout(self.widget)
        self.gridLayout.setContentsMargins(0, 0, 0, 0)
        self.gridLayout.setObjectName("gridLayout")
        self.comboBox = QtWidgets.QComboBox(self.widget)
        self.comboBox.setObjectName("comboBox")
        self.comboBox.addItem("")
        self.gridLayout.addWidget(self.comboBox, 0, 1, 1, 1)
        self.label_2 = QtWidgets.QLabel(self.widget)
        self.label_2.setObjectName("label_2")
        self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1)
        self.lineEdit = QtWidgets.QLineEdit(self.widget)
        self.lineEdit.setObjectName("lineEdit")
        self.gridLayout.addWidget(self.lineEdit, 1, 1, 1, 1)
        self.label_3 = QtWidgets.QLabel(self.widget)
        self.label_3.setObjectName("label_3")
        self.gridLayout.addWidget(self.label_3, 2, 0, 1, 1)
        self.label = QtWidgets.QLabel(self.widget)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
        self.lineEdit_3 = QtWidgets.QLineEdit(self.widget)
        self.lineEdit_3.setObjectName("lineEdit_3")
        self.gridLayout.addWidget(self.lineEdit_3, 3, 1, 1, 1)
        self.lineEdit_2 = QtWidgets.QLineEdit(self.widget)
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.gridLayout.addWidget(self.lineEdit_2, 2, 1, 1, 1)
        self.label_4 = QtWidgets.QLabel(self.widget)
        self.label_4.setObjectName("label_4")
        self.gridLayout.addWidget(self.label_4, 3, 0, 1, 1)
        self.pushButton = QtWidgets.QPushButton(self.widget)
        self.pushButton.setObjectName("pushButton")
        self.gridLayout.addWidget(self.pushButton, 4, 1, 1, 1)
        self.pushButton_2 = QtWidgets.QPushButton(self.widget)
        self.pushButton_2.setObjectName("pushButton_2")
        self.gridLayout.addWidget(self.pushButton_2, 4, 2, 1, 1)
        self.tabWidget.addTab(self.tab_2, "")
        self.horizontalLayout.addWidget(self.tabWidget)
        self.retranslateUi(Form)
        self.pushButton_5.clicked.connect(Form.update)
        self.tabWidget.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(Form)
    def show_message_del_row(self):
        # show_date = self.tableView.
        button=QMessageBox.information(self.tableView,u"通知", u"您将删除:{}".format(), QMessageBox.Ok | QMessageBox.Cancel, QMessageBox.Ok)
        if button == QMessageBox.Ok:
            self.model.removeRow(self.tableView.currentIndex().row())
    def findrow(self,i):
        self.delrow = i.row()
        s = self.tableView.currentIndex().row()
        s1 = self.tableView.currentIndex().data()
        print('del row=%s' % str(self.delrow),s1)

    def create_Menu(self,pos):
        menu = QMenu()
        item1 = menu.addAction(u'删除')
        self.action = menu.exec_(self.tableView.mapToGlobal(pos))
        if self.action==item1:
            self.single_del_row.emit()
    def create_view(self):
        self.tableView = QtWidgets.QTableView(self.tab)
        self.tableView.setGeometry(QtCore.QRect(10, 11, 451, 211))
        self.tableView.setObjectName("tableView")
        self.tableView.setModel(self.model)
        #允许右键产生菜单
        self.tableView.setContextMenuPolicy(Qt.CustomContextMenu)
        self.tableView.customContextMenuRequested.connect(self.create_Menu)
        self.pushButton_3 = QtWidgets.QPushButton(self.tab)
        self.pushButton_3.setGeometry(QtCore.QRect(380, 230, 75, 23))
        self.pushButton_3.setObjectName("pushButton_3")
        self.pushButton_4 = QtWidgets.QPushButton(self.tab) #pushButton_4新增
        self.pushButton_4.setGeometry(QtCore.QRect(300, 230, 75, 23))
        self.pushButton_4.setObjectName("pushButton_4")

        self.tableView.clicked.connect(self.findrow)
        self.pushButton_4.clicked.connect(lambda :self.model.insertRows(self.model.rowCount(),1))
        self.pushButton_3.clicked.connect(lambda: self.model.removeRow(self.tableView.currentIndex().row()))

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.pushButton_3.setText(_translate("Form", "删除"))
        self.pushButton_4.setText(_translate("Form", "新增"))
        self.pushButton_5.setText(_translate("Form", "刷新"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("Form", "查询-发酵罐"))
        self.comboBox.setItemText(0, _translate("Form", "#1号车间"))
        self.label_2.setText(_translate("Form", "发酵罐编号:"))
        self.label_3.setText(_translate("Form", "温度计编号:"))
        self.label.setText(_translate("Form", "车间编号:"))
        self.label_4.setText(_translate("Form", "上传二维码"))
        self.pushButton.setText(_translate("Form", "提交"))
        self.pushButton_2.setText(_translate("Form", "重置"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("Form", "新增-发酵罐"))

def initializeModel(model):
    model.setTable('date_of_01cj')
    model.setEditStrategy(QSqlTableModel.OnFieldChange)
    model.select()
    model.setHeaderData(0, Qt.Horizontal, "id_cj")
    model.setHeaderData(1, Qt.Horizontal, "id_fa")
    model.setHeaderData(2, Qt.Horizontal, "id_temp")

###################
###################

if __name__ == '__main__':
    app = QApplication(sys.argv)
    QMainWindow = QWidget()
    fjg_gl = Ui_Form()
    fjg_gl.setupUi(QMainWindow)
    fjg_gl.pushButton_5.clicked.connect(lambda :QApplication.processEvents())
    QMainWindow.show()
    sys.exit(app.exec_())

    '''db = QSqlDatabase.addDatabase('QSQLITE')
    db.setDatabaseName('../data_db/date_of_cj.db')
    model = QSqlTableModel()
    delrow = -1
    initializeModel(model)
    view1 = createView("Table Model (View 1)", model)
    view1.clicked.connect(findrow)

    dlg = QDialog()
    layout = QVBoxLayout()
    layout.addWidget(view1)
    addBtn = QPushButton("添加一行")
    addBtn.clicked.connect(addrow)
    layout.addWidget(addBtn)

    delBtn = QPushButton("删除一行")
    delBtn.clicked.connect(lambda: model.removeRow(view1.currentIndex().row()))
    layout.addWidget(delBtn)
    dlg.setLayout(layout)
    dlg.setWindowTitle("Database 例子")
    dlg.resize(430, 450)
    dlg.show()
    sys.exit(app.exec_())'''


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值