Python GUI: 使用 QTableWidget 编辑数据库数据
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_())
原文地址: https://www.cveoy.top/t/topic/oPft 著作权归作者所有。请勿转载和采集!