from PySide6.QtCore import QRegularExpression from PySide6.QtGui import QRegularExpressionValidator from PySide6.QtWidgets import QDialog, QVBoxLayout, QLineEdit, QHBoxLayout, QLabel, QPushButton from core.usermanager import UserManager class AddBookInformation(QDialog): def __init__(self, user_manager: UserManager): super().__init__() self.user_manager = user_manager self.layout = QVBoxLayout() self.setWindowTitle("添加图书信息") self.isbn = QHBoxLayout() self.isbn.addWidget(QLabel("ISBN")) self.isbn_line_edit = QLineEdit() self.isbn.addWidget(self.isbn_line_edit) self.layout.addLayout(self.isbn) self.author_line_edit = QLineEdit() self.author = QHBoxLayout() self.author.addWidget(QLabel("作者")) self.author.addWidget(self.author_line_edit) self.layout.addLayout(self.author) self.summary_line_edit = QLineEdit() self.summary = QHBoxLayout() self.summary.addWidget(QLabel("书名")) self.summary.addWidget(self.summary_line_edit) self.layout.addLayout(self.summary) self.price_line_edit = QLineEdit() reg = QRegularExpression('^[1-9]\d*\.\d+$|^0\.\d+$|^[1-9]\d*$|^0$') validator = QRegularExpressionValidator(self) validator.setRegularExpression(reg) self.price_line_edit.setValidator(validator) self.price = QHBoxLayout() self.price.addWidget(QLabel("价格")) self.price.addWidget(self.price_line_edit) self.layout.addLayout(self.price) self.date_line_edit = QLineEdit() self.date = QHBoxLayout() self.date.addWidget(QLabel("成书日期")) self.date.addWidget(self.date_line_edit) self.layout.addLayout(self.date) self.category_line_edit = QLineEdit() self.category = QHBoxLayout() self.category.addWidget(QLabel("分类")) self.category.addWidget(self.category_line_edit) self.layout.addLayout(self.category) self.add_button = QPushButton("添加图书") self.add_button.clicked.connect(self.add) self.layout.addWidget(self.add_button) self.setLayout(self.layout) def add(self): self.user_manager.add_book_info(self.isbn_line_edit.text(), self.author_line_edit.text(), self.summary_line_edit.text(), self.price_line_edit.text(), self.date_line_edit.text(), self.category_line_edit.text())