Python PyQt5 图书管理系统:添加图书界面实现
使用 PyQt5 创建图书管理系统的添加图书界面
以下代码展示了如何使用 PyQt5 创建一个简单的添加图书界面,并将其连接到数据库进行数据存储。
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QLineEdit, QPushButton, QGridLayout, QWidget, QMessageBox
import pymysql
class Add_Book_Window(QMainWindow):
def __init__(self, parent=None):
super(Add_Book_Window, self).__init__(parent)
self.setWindowTitle('增加图书界面')
self.resize(400, 300)
# 创建界面控件
self.label_add_bookid = QLabel('图书ID:')
self.edit_add_bookid = QLineEdit()
self.label_add_bookname = QLabel('书名:')
self.edit_add_bookname = QLineEdit()
self.label_add_author = QLabel('作者:')
self.edit_add_author = QLineEdit()
self.label_add_chubanshe = QLabel('出版社:')
self.edit_add_chubanshe = QLineEdit()
self.label_add_time = QLabel('出版时间:')
self.edit_add_time = QLineEdit()
self.label_add_price = QLabel('价格:')
self.edit_add_prince = QLineEdit()
self.label_add_lendornot = QLabel('是否借出:')
self.edit_add_lendornot = QLineEdit()
# 将控件添加到布局中
layout1 = QGridLayout()
layout1.addWidget(self.label_add_bookid, 0, 0)
layout1.addWidget(self.edit_add_bookid, 0, 1)
layout1.addWidget(self.label_add_bookname, 1, 0)
layout1.addWidget(self.edit_add_bookname, 1, 1)
layout1.addWidget(self.label_add_author, 2, 0)
layout1.addWidget(self.edit_add_author, 2, 1)
layout1.addWidget(self.label_add_chubanshe, 3, 0)
layout1.addWidget(self.edit_add_chubanshe, 3, 1)
layout1.addWidget(self.label_add_time, 4, 0)
layout1.addWidget(self.edit_add_time, 4, 1)
layout1.addWidget(self.label_add_price, 5, 0)
layout1.addWidget(self.edit_add_price, 5, 1)
layout1.addWidget(self.label_add_lendornot, 6, 0)
layout1.addWidget(self.edit_add_lendornot, 6, 1)
self.btn_add_book_yes = QPushButton('添加')
self.btn_add_book_fanhui = QPushButton('返回')
# 设置信号槽连接
self.btn_add_book_yes.connect(self.on_add_book)
self.centralWidget = QWidget()
self.centralWidget.setLayout(layout1)
self.setCentralWidget(self.centralWidget)
# 将输入的信息添加到数据库内
def on_add_book(self):
# 获取界面上的信息
bookid = self.edit_add_bookid.text()
bookname = self.edit_add_bookname.text()
author = self.edit_add_author.text()
chubanshe = self.edit_add_chubanshe.text()
time = self.edit_add_time.text()
price = self.edit_add_price.text()
lendornot = self.edit_add_lendornot.text()
# 连接数据库
db = pymysql.connect("localhost", "root", "123456", "library")
cursor = db.cursor()
# 执行SQL语句
sql = "INSERT INTO LBook (图书ID, 书名, 作者, 出版社, 出版年月, 价格, 是否借出) VALUES('%s', '%s', '%s', '%s', '%s', '%s', '%s')" % (bookid, bookname, author, chubanshe, time, price, lendornot)
try:
cursor.execute(sql)
db.commit()
QMessageBox.information(self, "提示", "添加成功!")
except:
db.rollback()
QMessageBox.warning(self, "提示", "添加失败!")
db.close()
# 运行程序
if __name__ == '__main__':
app = QApplication([])
add_book_window = Add_Book_Window()
add_book_window.show()
app.exec_()
解释:
- 导入必要的库:
PyQt5用于创建界面,pymysql用于连接数据库。 - 创建
Add_Book_Window类:继承QMainWindow,并定义了初始化函数__init__和添加图书函数on_add_book。 - 创建界面控件:使用
QLabel和QLineEdit创建标签和文本输入框,用于获取用户输入的图书信息。 - 布局控件:使用
QGridLayout将控件排列到界面中。 - 创建按钮:使用
QPushButton创建添加按钮和返回按钮。 - 连接信号槽:将添加按钮的点击信号连接到
on_add_book函数。 on_add_book函数:获取用户输入信息,连接数据库,执行 SQL 语句,并将数据插入数据库中。- 错误处理:使用
try...except语句处理数据库操作的异常,并在异常发生时提示用户。 - 运行程序:创建
QApplication实例,创建Add_Book_Window实例并显示,启动事件循环。
数据库表结构:
CREATE TABLE LBook (
图书ID CHAR(18) NOT NULL PRIMARY KEY,
书名 VARCHAR(100) NOT NULL,
作者 VARCHAR(100) NOT NULL,
出版社 VARCHAR(100) NOT NULL,
出版年月 CHAR(15) NULL,
价格 CHAR(10) NULL,
是否借出 ENUM('否', '是') DEFAULT '否',
借书证号 CHAR(6) NULL
);
注意:
- 在使用本代码之前,需要确保已经安装了
PyQt5和pymysql库。 - 需要修改代码中的数据库连接信息,包括数据库地址、用户名、密码和数据库名。
- 需要根据实际需求调整数据库表结构和 SQL 语句。
本代码只是简单演示了如何使用 PyQt5 创建添加图书界面,实际应用中可能需要考虑更多功能和优化。
原文地址: https://www.cveoy.top/t/topic/oPbY 著作权归作者所有。请勿转载和采集!