用python和qt实现图书馆人员增加,删除,修改

要实现图书馆人员增加、删除和修改功能,可以使用Python和Qt结合的方式来开发图形用户界面(GUI)。以下是一些可能的实现步骤:

  1. 安装Qt和PyQt :确保你已经安装了Qt和PyQt,并且你的Python版本与PyQt的版本兼容。

  2. 创建GUI :使用Qt Designer来创建GUI。在Qt Designer中,你可以添加文本框、按钮、列表框等等控件来构建你的界面。将控件添加到主窗口,并将它们设置为合适的大小和位置。

  3. 添加代码:使用Python编写代码来实现添加、删除和修改功能。你需要编写函数来执行这些操作,并将它们连接到相应的按钮或菜单项上。当用户点击按钮或菜单项时,函数将被调用,执行相应的操作。

  4. 数据存储:你需要一个地方来存储图书馆人员的数据。可以使用SQLite数据库来存储数据。在Python中,你可以使用sqlite3模块来连接和操作SQLite数据库。

  5. 测试:测试你的程序,确保它能够正确地执行添加、删除和修改功能。如果发现任何问题,就要回到代码中找到错误并修复它们。

 以下是一个示例代码,实现添加、删除和修改图书馆人员的功能:

# -- coding: utf-8 --
# @Author : 杨楠
# -------------------------------
# @File : day2.py
# @Software : PyCharm
# @Time : 2023/3/30 9:43

import sqlite3
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton, QHBoxLayout, QVBoxLayout, \
    QTableWidget, QTableWidgetItem, QMessageBox


class Library(QWidget):
    def __init__(self):
        super().__init__()

        # 创建数据库连接
        self.conn = sqlite3.connect('library.db')
        self.cursor = self.conn.cursor()

        # 创建UI
        self.initUI()

    def initUI(self):
        # 添加图书馆人员
        self.add_name_label = QLabel('Name:')
        self.add_name_edit = QLineEdit()
        self.add_btn = QPushButton('Add')
        self.add_btn.clicked.connect(self.add_person)
        add_layout = QHBoxLayout()
        add_layout.addWidget(self.add_name_label)
        add_layout.addWidget(self.add_name_edit)
        add_layout.addWidget(self.add_btn)

        # 删除图书馆人员
        self.del_btn = QPushButton('Delete')
        self.del_btn.clicked.connect(self.del_person)

        # 修改图书馆人员
        self.edit_name_label = QLabel('Name:')
        self.edit_name_edit = QLineEdit()
        self.edit_btn = QPushButton('Edit')
        self.edit_btn.clicked.connect(self.edit_person)
        edit_layout = QHBoxLayout()
        edit_layout.addWidget(self.edit_name_label)
        edit_layout.addWidget(self.edit_name_edit)
        edit_layout.addWidget(self.edit_btn)

        # 显示图书馆人员列表
        self.person_table = QTableWidget()
        self.person_table.setColumnCount(2)
        self.person_table.setHorizontalHeaderLabels(['ID', 'Name'])
        self.show_person()

        # 创建UI布局
        main_layout = QVBoxLayout()
        main_layout.addLayout(add_layout)
        main_layout.addWidget(self.del_btn)
        main_layout.addLayout(edit_layout)
        main_layout.addWidget(self.person_table)
        self.setLayout(main_layout)

    def add_person(self):
        # 获取添加的人员名字
        name = self.add_name_edit.text()

        if name:
            # 将人员添加到数据库
            self.cursor.execute("INSERT INTO person (name) VALUES (?)", (name,))
            self.conn.commit()

            # 刷新列表
            self.show_person()
        else:
            # 如果名字为空,弹出提示框
            QMessageBox.warning(self, 'Warning', 'Please enter a name!')

    def del_person(self):
        # 获取选中的行
        row = self.person_table.currentRow()
        if row != -1:
            # 获取选中行的ID
            person_id = self.person_table.item(row, 0).text()

            # 从数据库中删除人员
            self.cursor.execute("DELETE FROM person WHERE id=?", (person_id,))
            self.conn.commit()

            # 刷新列表
            self.show_person()
        else:
            # 如果没有选中行,弹出提示框
            QMessageBox.warning(self, 'Warning', 'Please select a person!')

    def edit_person(self):
        # 获取选中的行
        row = self.person_table.currentRow()
        if row != -1:
            # 获取选中行的ID和名字
            person_id = self.person_table.item(row, 0).text()
            name = self.edit_name_edit.text()

            if name:
                # 更新数据库中的人员名字
                self.cursor.execute("UPDATE person SET name=? WHERE id=?", (name, person_id))
                self.conn.commit()

                # 刷新列表
                self.show_person()
            else:
                # 如果名字为空,弹出提示框
                QMessageBox.warning(self, 'Warning', 'Please enter a name!')
        else:
            # 如果没有选中行,弹出提示框
            QMessageBox.warning(self, 'Warning', 'Please select a person!')

    def show_person(self):
        # 清空列表
        self.person_table.setRowCount(0)

        # 从数据库中获取人员列表
        self.cursor.execute("SELECT id, name FROM person")
        persons = self.cursor.fetchall()

        # 将人员添加到列表中
        for row, person in enumerate(persons):
            self.person_table.insertRow(row)
            for col, value in enumerate(person):
                item = QTableWidgetItem(str(value))
                item.setTextAlignment(Qt.AlignCenter)
                self.person_table.setItem(row, col, item)

    def closeEvent(self, event):
        # 关闭数据库连接
        self.cursor.close()
        self.conn.close()

if __name__ =="__main__":
    app = QApplication([])
    library = Library()
    library.show()
    app.exec_()

这个程序使用了PyQt的许多特性,包括QPushButton、QLabel、QLineEdit、QTableWidget等等。它还使用了sqlite3模块来连接和操作SQLite数据库。 在程序启动时,它会创建一个GUI,包括添加、删除和修改图书馆人员的功能。它还会显示一个列表,用于显示已添加的人员。当用户添加、删除或修改人员时,程序会将数据写入数据库并更新列表。 当用户关闭程序时,程序会关闭数据库连接。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值