import pymysql
import sys
from PySide6.QtCore import *
from PySide6.QtGui import *
from PySide6.QtWidgets import *
from QtUser import User_Dialog

class Main_Window(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.tableWidget = QTableWidget()
        self.setCentralWidget(self.tableWidget)

        # 创建按钮
        self.editBtn = QPushButton('编辑')
        self.editBtn.clicked.connect(self.editData)

        # 添加按钮到工具栏
        toolbar = QToolBar()
        self.addToolBar(toolbar)
        toolbar.addWidget(self.editBtn)

        # 创建数据库连接
        self.conn = pymysql.connect(host='localhost', port=3306, user='root', password='123456', db='test')
        self.cur = self.conn.cursor()
        self.cur.execute('select * from LBook')
        rows = self.cur.fetchall()

        # 设置表头
        self.tableWidget.setColumnCount(8)
        self.tableWidget.setHorizontalHeaderLabels(['图书ID', '书名', '作者', '出版社', '出版年月', '价格', '是否借出', '借书证号'])

        # 设置表格内容
        self.tableWidget.setRowCount(len(rows))
        for i, row in enumerate(rows):
            for j, col in enumerate(row):
                self.tableWidget.setItem(i, j, QTableWidgetItem(str(col)))

        self.show()

    def editData(self):
        # 获取选中行的图书ID
        current_row = self.tableWidget.currentRow()
        book_id = self.tableWidget.item(current_row, 0).text()

        # 打开用户界面
        self.user_dialog = User_Dialog()
        self.user_dialog.show()

        # 监听用户界面的确认按钮
        self.user_dialog.accepted.connect(lambda: self.updateData(book_id))

    def updateData(self, book_id):
        # 获取用户输入的值
        book_name = self.user_dialog.book_name_edit.text()
        author = self.user_dialog.author_edit.text()
        publisher = self.user_dialog.publisher_edit.text()
        pub_date = self.user_dialog.pub_date_edit.text()
        price = self.user_dialog.price_edit.text()
        borrowed = self.user_dialog.borrowed_edit.currentText()
        card_id = self.user_dialog.card_id_edit.text()

        # 更新数据库
        sql = f"update LBook set 书名='{book_name}', 作者='{author}', 出版社='{publisher}', 出版年月='{pub_date}', 价格='{price}', 是否借出='{borrowed}', 借书证号='{card_id}' where 图书ID='{book_id}'"
        self.cur.execute(sql)
        self.conn.commit()

        # 更新QTableWidget中对应行的数据
        current_row = self.tableWidget.currentRow()
        self.tableWidget.setItem(current_row, 1, QTableWidgetItem(book_name))
        self.tableWidget.setItem(current_row, 2, QTableWidgetItem(author))
        self.tableWidget.setItem(current_row, 3, QTableWidgetItem(publisher))
        self.tableWidget.setItem(current_row, 4, QTableWidgetItem(pub_date))
        self.tableWidget.setItem(current_row, 5, QTableWidgetItem(price))
        self.tableWidget.setItem(current_row, 6, QTableWidgetItem(borrowed))
        self.tableWidget.setItem(current_row, 7, QTableWidgetItem(card_id))

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = Main_Window()
    sys.exit(app.exec_())
Python GUI: 使用 QTableWidget 编辑数据库数据

原文地址: https://www.cveoy.top/t/topic/oPft 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录