pyqt5实现的一个简单的登录和表格增删改查功能,基本实现大部分需求 | 您所在的位置:网站首页 › eclipse连接mysql数据库并实现增删改查界面 › pyqt5实现的一个简单的登录和表格增删改查功能,基本实现大部分需求 |
最近有个项目,需要做桌面端应用,所以就系统学习了下pyqt5的知识点,发现还是挺强大的。 做了多年的python码农,最终折腾了下,做了个大概的效果出来,基本满足数据库表增删改查功能了。 管理员角色逻辑实现 admin_view.py from PyQt5.QtWidgets import QStyleOption, QStyle, QWidget, QLabel, QPushButton, QLineEdit, QTableView, QGridLayout, \ QFileDialog, QMessageBox, QTableWidget, QFrame, QTableWidgetItem import sys from decimal import * from PyQt5.QtWidgets import QApplication, QMainWindow from PyQt5.uic import loadUi # from qtpy.QtCore import Qt class AdminMainWindow(QMainWindow): def __init__(self, parent=None, phone=None): super(AdminMainWindow, self).__init__(parent) loadUi('adminView.ui', self) self.setWindowTitle(f'欢迎 管理员') # 餐桌相关操作 self.searchTableButton.clicked.connect(self.search_table) # 搜索餐桌数据 self.insertTableButton.clicked.connect(self.insert_table) # 新增餐桌数据 self.saveTableButton.clicked.connect(self.save_table) # 保存餐桌数据 self.delTableButton.clicked.connect(self.delete_table) # 删除餐桌数据 # 系统-退出 self.exit.triggered.connect(self.close) # 配置frame的显示 self.tabWidget.setVisible(True) def alarm(self, msg): """ 报警提示框 """ QMessageBox.warning(self, "提示框", msg, QMessageBox.Ok) def tips(self, msg): """ 正常提醒 :param msg: :return: """ QMessageBox.information(self, "提示框", msg, QMessageBox.Ok) def show_table(self, table_widget, headers, data): """ 展示table数据 :return: """ row = len(data) # 获取行数 if not row: self.alarm('暂无数据!') table_widget.setRowCount(0) # 配置要显示的行数 table_widget.setColumnCount(len(headers)) # 配置要显示的行数 table_widget.setHorizontalHeaderLabels(headers) # 设置表头 return vol = len(data[0]) # 获取列数 table_widget.setRowCount(row) # 配置要显示的行数 table_widget.setColumnCount(vol) # 配置要显示的行数 table_widget.setHorizontalHeaderLabels(headers) # 设置表头 for i in range(row): # 循环展示数据 for j in range(vol): table_widget.setItem(i, j, QTableWidgetItem(str(data[i][j]))) self.tips('数据查询成功') def search_table(self): """ 查询餐桌 :return: """ floor = self.floorLineEdit.text() f, d = ['id', '楼层', '桌号', '可坐人数', '当前状态'], ((1, '1', '001', Decimal('151'), '空闲'), (5, '1', '002', Decimal('6'), '空闲'), (8, '2', '001', Decimal('5'), '空闲'), (9, '1', '004', Decimal('6'), '空闲'), (10, '1', '005', Decimal('8'), '空闲')) self.show_table(self.tableTableWidget, f, d) def insert_table(self): """ 新增一条餐桌数据,会在table中插入一条数据 只有点击保存的时候才会真正存储至数据库中 """ row = self.tableTableWidget.rowCount() self.tableTableWidget.insertRow(row) self.tableTableWidget.setItem(row, 0, QTableWidgetItem("")) self.tableTableWidget.setItem(row, 1, QTableWidgetItem("")) self.tableTableWidget.setItem(row, 2, QTableWidgetItem("")) self.tableTableWidget.setItem(row, 3, QTableWidgetItem("")) self.tableTableWidget.setItem(row, 4, QTableWidgetItem("空闲")) def save_table(self): """ 保存餐桌 :return: """ rows = self.tableTableWidget.rowCount() # 获取当前的行数 colomn = self.tableTableWidget.columnCount() # 获取当前的列数 print(f'{rows}行, {colomn}列') cards = [] # 去重告警 for i in range(rows): # 存储所有的card数据,判断是否有重复卡号 _tmp = [] # 临时存储一行数据 for c in range(colomn): item = self.tableTableWidget.item(i, c) if not item: self.alarm('有单元格数据为空,保存数据失败!') return item_text = item.text() # 处理空字符串 _tmp.append(item_text) # todo 这里做入库动作 self.tips('数据保存成功!') # 刷新一下数据 self.search_table() def delete_table(self): """ 删除餐桌 """ row_select = self.tableTableWidget.selectedItems() if len(row_select) == 0: return id = row_select[0].text() row = row_select[0].row() self.tableTableWidget.removeRow(row) # 以下可以加入保存数据到数据的操作 if id: print("id: {}".format(id)) # todo 数据库删除数据 self.tips('删除成功!') if __name__ == '__main__': app = QApplication(sys.argv) w = AdminMainWindow(phone='xxxxx') w.show() sys.exit(app.exec())核心代码上面已放出,如需整套源码下载,一套完整的程序,解压即可正常执行~~~~有疑问或者有其他需求也欢迎私聊。 原创作品,未经同意,不得转载~~~~ |
CopyRight 2018-2019 实验室设备网 版权所有 |