当前位置:   article > 正文

手把手教你开发Python桌面应用-PyQt6图书管理系统-图书信息修改实现

手把手教你开发Python桌面应用-PyQt6图书管理系统-图书信息修改实现

锋哥原创的PyQt6图书管理系统视频教程:

PyQt6图书管理系统视频教程 Python桌面开发 Python入门级项目实战 (无废话版) 火爆连载更新中~_哔哩哔哩_bilibiliPyQt6图书管理系统视频教程 Python桌面开发 Python入门级项目实战 (无废话版) 火爆连载更新中~共计24条视频,包括:PyQt6图书管理系统视频教程 Python桌面开发 Python入门级项目实战 (无废话版) 火爆连载更新中~、第2讲 登录功能UI设计实现、第3讲 数据库操作工具包dbUtil.py封装等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV18t4y1R7Qp/首先表单操作界面,我们需要做一些处理,编号输入框设置只读,背景色灰色,默认的作者性别,我们可以设置成男,以及图书类别数据需要初始化下。

  1. # 设置默认选中
  2. self.manRadio.setChecked(True)

初始化下拉框数据

  1. def initBookTypeListComboBox(self):
  2. """
  3. 初始化下拉框数据
  4. :return:
  5. """
  6. bookTypeList = bookTypeDao.list("") # 获取所有图书类别信息
  7. self.s_bookTypeComboBox.addItem("请选择图书类别...", -1)
  8. self.bookTypeComboBox.addItem("请选择图书类别...", -1)
  9. for bookType in bookTypeList:
  10. self.bookTypeComboBox.addItem(bookType[1], bookType[0])
  11. self.s_bookTypeComboBox.addItem(bookType[1], bookType[0])

编号输入框设置只读,以及背景色改成灰色

  1. self.idInput.setReadOnly(True)
  2. self.idInput.setStyleSheet("background-color:gray")

接下来是行点击事件,点击行,获取行数据,初始化表单

先定义初始化表单方法initForm

  1. def initForm(self, index: QModelIndex):
  2. """
  3. 初始化Form
  4. :param index:
  5. :return:
  6. """
  7. rowIndex = index.row() # 获取行索引
  8. self.idInput.setText(self.bookTable.item(rowIndex, 0).text()) # 设置编号
  9. self.bookNameInput.setText(self.bookTable.item(rowIndex, 1).text()) # 设置图书名称
  10. self.authorInput.setText(self.bookTable.item(rowIndex, 2).text()) # 设置图书作者
  11. self.bookTypeComboBox.setCurrentText(self.bookTable.item(rowIndex, 3).text()) # 设置图书类别
  12. if self.bookTable.item(rowIndex, 4).text() == '男': # 设置性别
  13. self.manRadio.setChecked(True)
  14. else:
  15. self.femaleRadio.setChecked(True)
  16. self.priceInput.setText(self.bookTable.item(rowIndex, 5).text()) # 设置图书价格
  17. self.bookDescInput.setPlainText(self.bookTable.item(rowIndex, 6).text()) # 设置图书类别描述

然后是行点击事件绑定

  1. # 行点击事件
  2. self.bookTable.clicked.connect(self.initForm)

运行测试:

我们具体执行修改操作,bookDao里编写update方法:

  1. def update(book: Book):
  2. """
  3. 图书修改
  4. :param book: 图书实体
  5. :return: 返回执行的记录条数
  6. """
  7. con = None
  8. try:
  9. con = dbUtil.getCon()
  10. cursor = con.cursor()
  11. cursor.execute(
  12. f"update t_book set bookName='{book.bookName}',author='{book.author}',sex='{book.sex}',price={book.price},bookTypeId={book.bookTypeId},bookDesc='{book.bookDesc}' where id={book.id}")
  13. return cursor.rowcount
  14. except Exception as e:
  15. print(e)
  16. con.rollback()
  17. return 0
  18. finally:
  19. dbUtil.closeCon(con)

更新表单的时候,我们向dao层update传递的book实体对象参数,构造的时候,是所有参数都包含,所以我们要再Book实体类里重新定义一个重载构造方法:

  1. @staticmethod
  2. def my_constructor2(id, bookName, author, sex, price, bookTypeId, bookDesc):
  3. obj = Book(bookName, author, bookTypeId)
  4. obj.id = id
  5. obj.sex = sex
  6. obj.price = price
  7. obj.bookDesc = bookDesc
  8. return obj

修改成功后,还需要重置表单,所以写编写一个重置表单的方式resetForm

  1. def resetForm(self):
  2. """
  3. 重置表单
  4. :return:
  5. """
  6. self.idInput.setText("")
  7. self.bookNameInput.setText("")
  8. self.authorInput.setText("")
  9. self.bookTypeComboBox.setCurrentIndex(0)
  10. self.manRadio.setChecked(True)
  11. self.priceInput.setText("")
  12. self.bookDescInput.setPlainText("")

接下来,bookManage.py的Ui_Form里,加下update方法:

  1. def update(self):
  2. """
  3. 更新表单
  4. :return:
  5. """
  6. id = self.idInput.text()
  7. if id.strip() == "":
  8. QMessageBox.information(None, '系统提示', '请选中您需要编辑的那行数据!')
  9. return
  10. bookName = self.bookNameInput.text()
  11. if bookName.strip() == "":
  12. QMessageBox.information(None, '系统提示', '请输入图书名称!')
  13. return
  14. sex = "男"
  15. if self.femaleRadio.isChecked():
  16. sex = "女"
  17. price = self.priceInput.text()
  18. if price.strip() == "":
  19. QMessageBox.information(None, '系统提示', '请输入图书价格!')
  20. return
  21. author = self.authorInput.text()
  22. if author.strip() == "":
  23. QMessageBox.information(None, '系统提示', '请输入图书作者!')
  24. return
  25. bookTypeId = self.bookTypeComboBox.currentData()
  26. bookDesc = self.bookDescInput.toPlainText();
  27. book = Book.my_constructor2(id, bookName, author, sex, price, bookTypeId, bookDesc)
  28. if bookDao.update(book) > 0:
  29. QMessageBox.information(None, '系统提示', '修改成功!')
  30. self.initTable()
  31. self.resetForm()
  32. else:
  33. QMessageBox.warning(None, '系统提示', '修改失败!')

编辑按钮绑定点击事件

  1. # 编辑按钮点击事件绑定
  2. self.modifyBtn.clicked.connect(self.update)

运行测试:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/105905
推荐阅读
相关标签
  

闽ICP备14008679号