PyQt5如何实现数据的增删改查功能
发表于:2024-09-27 作者:千家信息网编辑
千家信息网最后更新 2024年09月27日,这篇文章主要介绍"PyQt5如何实现数据的增删改查功能"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"PyQt5如何实现数据的增删改查功能"文章能帮助大家解决问
千家信息网最后更新 2024年09月27日PyQt5如何实现数据的增删改查功能
这篇文章主要介绍"PyQt5如何实现数据的增删改查功能"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"PyQt5如何实现数据的增删改查功能"文章能帮助大家解决问题。
话不多说,还是先来梳理一下需要的第三方模块。
PyQ5 的UI界面布局部分,同样是还是使用这三个模块就够了。
from PyQt5.QtGui import *from PyQt5.QtWidgets import *from PyQt5.QtCore import *
将sys模块导入到代码块中,用于main函数里面的主体循环时使用。
import sys
add_dialog是一个自己写的添加数据的弹框。
from add_dialog import AddDialog
创建好DataManage类,主要用来实现主窗口页面的UI布局。
class DataManage(QWidget): def __init__(self): super(DataManage, self).__init__() self.data_list = [] self.init_ui() def init_ui(self): '''全局设置''' self.setWindowIcon(QIcon('数据.ico')) self.setWindowTitle('数据管理器') self.resize(550, 400) grid = QGridLayout() '''菜单设置''' self.add_btn = QPushButton() self.add_btn.setText('添加数据') self.add_btn.clicked.connect(self.add_btn_click) self.del_btn = QPushButton() self.del_btn.setText('删除数据') self.del_btn.clicked.connect(self.del_data_row) self.query_btn = QPushButton() self.query_btn.setText('查询') self.query_btn.clicked.connect(self.query_data_list) '''数据列表设置''' self.data_table = QTableWidget() COLUMN = 5 ROW = 0 self.data_table.setColumnCount(COLUMN) self.data_table.setRowCount(ROW) h_table_header = ['序号', '姓名', '年龄', '班级', '表现'] self.data_table.setHorizontalHeaderLabels(h_table_header) self.data_table.verticalHeader().setVisible(False) self.data_table.setShowGrid(True) self.data_table.setEditTriggers(QTableWidget.NoEditTriggers) self.data_table.setSelectionBehavior(QTableWidget.SelectRows) self.data_table.setSelectionMode(QTableWidget.SingleSelection) for index in range(self.data_table.columnCount()): headItem = self.data_table.horizontalHeaderItem(index) headItem.setTextAlignment(Qt.AlignVCenter) '''加入布局''' grid.addWidget(self.add_btn, 0, 0, 1, 1) grid.addWidget(self.del_btn, 0, 1, 1, 1) grid.addWidget(self.query_btn, 0, 2, 1, 1) grid.addWidget(self.data_table, 1, 0, 1, 3) self.setLayout(grid)
定义需要的槽函数,通过不同按钮的信号绑定相应的槽函数从而来实现该按钮需要绑定的事件来实现业务逻辑。
# 将新增数据的按钮绑定到该槽函数 def add_btn_click(self): ''' 打开新增数据的弹框模块 :return: ''' AddDialog.get_add_dialog(self) # 将查询数据的按钮绑定到该槽函数 def query_data_list(self): ''' 查询数据、并将数据展示到主窗口的数据列表中 :return: ''' data = self.data_list if len(data) != 0 and len(data[0]) != 0: self.data_table.setRowCount(len(data)) self.data_table.setColumnCount(len(data[0])) for i in range(len(data)): for j in range(len(data[0])): self.data_table.setItem(i, j, QTableWidgetItem(str(data[i][j]))) # 将删除数据按钮绑定到该槽函数 def del_data_row(self): ''' 删除某一行的数据信息 :return: ''' row_select = self.data_table.selectedItems() print(row_select) if len(row_select) != 0: row = row_select[0].row() print(row) self.data_table.removeRow(row) del self.data_list[row] print(self.data_table)
通过 main() 函数来启动整个应用程序。
if __name__ == '__main__': app = QApplication(sys.argv) main = DataManage() main.show() sys.exit(app.exec_())
最后,将新增数据时自定义的弹框模块的代码分享一下。这个模块就是为了自定弹框单独写的一个模块,通过在主窗口直接调用该模块实现的弹框函数就能实现一个弹框的功能。
创建一个 add_dialog.py 的文件,将下面的代码块放到里面即可。
from PyQt5.QtWidgets import *class AddDialog(QDialog): def __init__(self, parent=None): super(AddDialog, self).__init__(parent) self.init_ui(parent) def init_ui(self,parent): '''水平布局''' hbox = QHBoxLayout() self.save_btn = QPushButton() self.save_btn.setText('保存') self.save_btn.clicked.connect(lambda :self.save_btn_click(parent)) self.cancel_btn = QPushButton() self.cancel_btn.setText('取消') self.cancel_btn.clicked.connect(self.cancel_btn_click) hbox.addWidget(self.save_btn) hbox.addWidget(self.cancel_btn) '''表单布局''' fbox = QFormLayout() self.seq_lab = QLabel() self.seq_lab.setText('序号:') self.seq_text = QLineEdit() self.seq_text.setPlaceholderText('请输入序号') self.name_lab = QLabel() self.name_lab.setText('姓名:') self.name_text = QLineEdit() self.name_text.setPlaceholderText('请输入姓名') self.age_lab = QLabel() self.age_lab.setText('年龄:') self.age_text = QLineEdit() self.age_text.setPlaceholderText('请输入年龄') self.class_lab = QLabel() self.class_lab.setText('班级:') self.class_text = QLineEdit() self.class_text.setPlaceholderText('请输入班级') self.socre_lab = QLabel() self.socre_lab.setText('表现:') self.socre_text = QLineEdit() self.socre_text.setPlaceholderText('请输入表现') fbox.addRow(self.seq_lab,self.seq_text) fbox.addRow(self.name_lab, self.name_text) fbox.addRow(self.age_lab, self.age_text) fbox.addRow(self.class_lab, self.class_text) fbox.addRow(self.socre_lab, self.socre_text) vbox = QVBoxLayout() vbox.addLayout(fbox) vbox.addLayout(hbox) self.setLayout(vbox) def save_btn_click(self,parent): if self.seq_text.text().strip() != '' and self.name_text.text().strip() != '' \ and self.age_text.text().strip() != ''and self.class_text.text().strip() != '' \ and self.socre_text.text().strip() != '' : print(parent.data_list) data = [self.seq_text.text(), self.name_text.text(), self.age_text.text(), self.class_text.text(), self.socre_text.text()] parent.data_list.append(data) print(parent.data_list) parent.query_data_list() self.close() def cancel_btn_click(self): self.close() @staticmethod def get_add_dialog(parent=None): dialog = AddDialog(parent) return dialog.exec()
关于"PyQt5如何实现数据的增删改查功能"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。
数据
函数
模块
布局
按钮
输入
功能
代码
姓名
年龄
序号
班级
知识
查询
不同
行业
还是
实用
一行
三个
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发 sde 有哪些
战地五服务器怎么加
公务员软件开发项目管理
未知错误无法连接ntp服务器
哪里查看苹果服务器
招商银行软件开发笔试题
海南应该软件开发报价
服务器主板坏了怎么打开磁盘
蓝帕网络技术有限公司
微信小程序服务器端开发
中油优途登陆提示服务器请求出错
中国重要会议论文全文数据库在哪
经开区建立补充耕地数据库
数据库中有无限时间
清空sql数据库id
网络安全管理制度授权
qq软件开发公司吗
网络安全原则积极防御
网络安全演讲稿2000字
艾泽拉斯大陆数据库
嘉定区企业软件开发承诺守信
迷你世界重力服务器怎么改
江北软件开发怎么样
服务器远程协同软件
国家网络安全宣传周怎么下载
网络安全符合国家的什么要求
华为手机怎么倒数据库
银行软件开发工程师招聘
数据库第五章演讲
数据库管理系统及其发展历史