iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >PyQt5如何实现数据的增删改查功能
  • 431
分享到

PyQt5如何实现数据的增删改查功能

2023-06-29 13:06:04 431人浏览 薄情痞子
摘要

这篇文章主要介绍“PyQt5如何实现数据的增删改查功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“PyQt5如何实现数据的增删改查功能”文章能帮助大家解决问题。话不多说,还是先来梳理一下需要的第三

这篇文章主要介绍“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如何实现数据的增删改查功能”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: PyQt5如何实现数据的增删改查功能

本文链接: https://www.lsjlt.com/news/325047.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL怎么更新字段长度
    要更新MySQL表中的字段长度,可以使用ALTER TABLE语句。以下是更新字段长度的示例: ALTER TABLE table_...
    99+
    2024-05-14
    mysql
  • sql如何修改表字段长度
    要修改表字段的长度,可以使用ALTER TABLE语句,然后使用MODIFY COLUMN来修改字段的长度。以下是一个示例: ALT...
    99+
    2024-05-14
    sql
  • mysql数据量太大如何解决
    有几种方法可以解决MySQL数据量过大的问题: 数据库分区:将数据库表按照某种规则进行分区,分成多个小表,可以提高查询速度和管理...
    99+
    2024-05-14
    mysql
  • MySQL单表数据量过大如何解决
    在MySQL中,当单表的数据量过大时,可以采取以下几种方法来解决问题: 使用索引:在表的字段上创建适当的索引,可以提高查询效率,...
    99+
    2024-05-14
    mysql
  • mysql导出数据量过大如何解决
    当导出的数据量过大时,可以尝试以下方法来解决问题: 使用数据库工具:使用数据库管理工具如Navicat或MySQL Workbe...
    99+
    2024-05-14
    mysql
  • mysql中log_bin的作用是什么
    在MySQL中,log_bin是二进制日志文件的名称,用于记录所有对数据库进行更改的操作,如插入、更新、删除等。这些二进制日志文件可...
    99+
    2024-05-14
    mysql
  • mysql中log_bin的特点有哪些
    log_bin是MySQL的二进制日志文件,用于记录所有对数据库的修改操作,包括插入、更新、删除等。 log_bin文件是M...
    99+
    2024-05-14
    mysql
  • mysql rpm包安装的方法是什么
    要在Linux系统上安装MySQL RPM包,可以按照以下步骤操作: 下载MySQL的RPM包:你可以从MySQL官方网站下载适...
    99+
    2024-05-14
    mysql
  • mysql rpm包安装后怎么使用
    安装MySQL RPM包后,您可以通过以下步骤来使用MySQL: 启动MySQL服务:使用以下命令来启动MySQL服务: sud...
    99+
    2024-05-14
    mysql
  • lxml中怎么处理XML命名空间默认值
    在lxml中处理XML命名空间的默认值可以通过使用xpath()方法和register_namespace()方法来实现。...
    99+
    2024-05-14
    lxml
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作