天台高端网站建设公司,做网站需要展示工厂么,没有做icp备案的网站,网站建设税收分类编码锋哥原创的PyQt6图书管理系统视频教程#xff1a;
PyQt6图书管理系统视频教程 Python桌面开发 Python入门级项目实战 (无废话版) 火爆连载更新中~_哔哩哔哩_bilibiliPyQt6图书管理系统视频教程 Python桌面开发 Python入门级项目实战 (无废话版) 火爆连载更新中~共计24条视频
PyQt6图书管理系统视频教程 Python桌面开发 Python入门级项目实战 (无废话版) 火爆连载更新中~_哔哩哔哩_bilibiliPyQt6图书管理系统视频教程 Python桌面开发 Python入门级项目实战 (无废话版) 火爆连载更新中~共计24条视频包括PyQt6图书管理系统视频教程 Python桌面开发 Python入门级项目实战 (无废话版) 火爆连载更新中~、第2讲 登录功能UI设计实现、第3讲 数据库操作工具包dbUtil.py封装等UP主更多精彩视频请关注UP账号。https://www.bilibili.com/video/BV18t4y1R7Qp/首先表单操作界面我们需要做一些处理编号输入框设置只读背景色灰色默认的作者性别我们可以设置成男以及图书类别数据需要初始化下。 # 设置默认选中self.manRadio.setChecked(True)
初始化下拉框数据 def initBookTypeListComboBox(self):初始化下拉框数据:return:bookTypeList bookTypeDao.list() # 获取所有图书类别信息self.s_bookTypeComboBox.addItem(请选择图书类别..., -1)self.bookTypeComboBox.addItem(请选择图书类别..., -1)for bookType in bookTypeList:self.bookTypeComboBox.addItem(bookType[1], bookType[0])self.s_bookTypeComboBox.addItem(bookType[1], bookType[0])
编号输入框设置只读以及背景色改成灰色
self.idInput.setReadOnly(True)self.idInput.setStyleSheet(background-color:gray) 接下来是行点击事件点击行获取行数据初始化表单
先定义初始化表单方法initForm def initForm(self, index: QModelIndex):初始化Form:param index::return:rowIndex index.row() # 获取行索引self.idInput.setText(self.bookTable.item(rowIndex, 0).text()) # 设置编号self.bookNameInput.setText(self.bookTable.item(rowIndex, 1).text()) # 设置图书名称self.authorInput.setText(self.bookTable.item(rowIndex, 2).text()) # 设置图书作者self.bookTypeComboBox.setCurrentText(self.bookTable.item(rowIndex, 3).text()) # 设置图书类别if self.bookTable.item(rowIndex, 4).text() 男: # 设置性别self.manRadio.setChecked(True)else:self.femaleRadio.setChecked(True)self.priceInput.setText(self.bookTable.item(rowIndex, 5).text()) # 设置图书价格self.bookDescInput.setPlainText(self.bookTable.item(rowIndex, 6).text()) # 设置图书类别描述
然后是行点击事件绑定
# 行点击事件self.bookTable.clicked.connect(self.initForm)
运行测试 我们具体执行修改操作bookDao里编写update方法
def update(book: Book):图书修改:param book: 图书实体:return: 返回执行的记录条数con Nonetry:con dbUtil.getCon()cursor con.cursor()cursor.execute(fupdate 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})return cursor.rowcountexcept Exception as e:print(e)con.rollback()return 0finally:dbUtil.closeCon(con)
更新表单的时候我们向dao层update传递的book实体对象参数构造的时候是所有参数都包含所以我们要再Book实体类里重新定义一个重载构造方法 staticmethoddef my_constructor2(id, bookName, author, sex, price, bookTypeId, bookDesc):obj Book(bookName, author, bookTypeId)obj.id idobj.sex sexobj.price priceobj.bookDesc bookDescreturn obj
修改成功后还需要重置表单所以写编写一个重置表单的方式resetForm def resetForm(self):重置表单:return:self.idInput.setText()self.bookNameInput.setText()self.authorInput.setText()self.bookTypeComboBox.setCurrentIndex(0)self.manRadio.setChecked(True)self.priceInput.setText()self.bookDescInput.setPlainText()
接下来bookManage.py的Ui_Form里加下update方法 def update(self):更新表单:return:id self.idInput.text()if id.strip() :QMessageBox.information(None, 系统提示, 请选中您需要编辑的那行数据)returnbookName self.bookNameInput.text()if bookName.strip() :QMessageBox.information(None, 系统提示, 请输入图书名称)returnsex 男if self.femaleRadio.isChecked():sex 女price self.priceInput.text()if price.strip() :QMessageBox.information(None, 系统提示, 请输入图书价格)returnauthor self.authorInput.text()if author.strip() :QMessageBox.information(None, 系统提示, 请输入图书作者)returnbookTypeId self.bookTypeComboBox.currentData()bookDesc self.bookDescInput.toPlainText();book Book.my_constructor2(id, bookName, author, sex, price, bookTypeId, bookDesc)if bookDao.update(book) 0:QMessageBox.information(None, 系统提示, 修改成功)self.initTable()self.resetForm()else:QMessageBox.warning(None, 系统提示, 修改失败)
编辑按钮绑定点击事件
# 编辑按钮点击事件绑定self.modifyBtn.clicked.connect(self.update)
运行测试