Python 图书管理系统:简单搜索功能实现
Python 图书管理系统:简单搜索功能实现
本文将使用 Python 和 PyQt5 库来创建一个简单的图书管理系统界面,并实现搜索图书的功能。
首先,我们将定义一个 Oper_Book_Window 类,该类继承自 QMainWindow 类,代表主窗口。
class Oper_Book_Window(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
# 初始化UI界面
def initUI(self):
# 设置窗口标题和大小
self.setWindowTitle('图书操作界面')
self.resize(400, 300)
# 创建一个标签和一个文本框用于输入书名
self.label_bookname = QLabel('输入书名:')
self.edit_bookname = QLineEdit()
# 创建一个按钮用于搜索
self.btn_search = QPushButton('搜索')
self.btn_search.clicked.connect(self.search_bookname)
# 创建一个列表用于显示搜索结果
self.list_book = QListWidget()
# 创建一个垂直布局并将控件添加进去
vbox = QVBoxLayout()
vbox.addWidget(self.label_bookname)
vbox.addWidget(self.edit_bookname)
vbox.addWidget(self.btn_search)
vbox.addWidget(self.list_book)
# 设置窗口布局
self.setLayout(vbox)
# **将布局设置为主窗口的布局**
self.centralWidget = QWidget()
self.centralWidget.setLayout(vbox)
self.setCentralWidget(self.centralWidget)
# 搜索书名
def search_bookname(self):
# 获取输入的书名
bookname = self.edit_bookname.text()
# 连接数据库
db = pymysql.connect('localhost', 'root', '123456', 'library')
cursor = db.cursor()
# 查询数据库
sql = "SELECT * FROM LBook WHERE 书名 = ' %s '" % bookname
try:
cursor.execute(sql)
results = cursor.fetchall()
if results:
# 如果找到了匹配的书名,则将结果添加到列表中
self.list_book.clear()
for row in results:
self.list_book.addItem(row[1])
else:
# 如果没有找到匹配的书名,则显示“无”
self.list_book.clear()
self.list_book.addItem('无')
except:
# 查询失败则提示错误信息
QMessageBox.warning(self, 'Error', '查询失败')
在 initUI 方法中,我们创建了标签、文本框、按钮和列表控件,并使用 QVBoxLayout 将它们垂直排列。最后,我们使用 setCentralWidget 方法将布局设置为主窗口的布局。
在 search_bookname 方法中,我们获取用户输入的书名,连接数据库并执行查询操作。如果查询成功,我们将结果添加到列表中;否则,我们显示错误信息。
注意: 为了运行这段代码,需要安装 PyQt5 和 pymysql 库。
通过这段代码,我们成功实现了简单的图书管理系统界面和搜索功能。你可以根据自己的需求添加更多功能,例如添加图书、删除图书等。
示例程序:
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QLineEdit, QPushButton, QListWidget, QVBoxLayout, QWidget, QMessageBox
import pymysql
class Oper_Book_Window(QMainWindow):
# ...(代码同上)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Oper_Book_Window()
window.show()
sys.exit(app.exec_())
原文地址: https://www.cveoy.top/t/topic/oNfy 著作权归作者所有。请勿转载和采集!