在这里插入代码片
import datetime
from PyQt5 import QtWidgets, QtGui, QtCore
import sys
from libs.ui_bookManager import Ui_MainWindow
from libs.db_utils import SystemSQLiteModel
class BorrowSystem(QtWidgets.QMainWindow, Ui_MainWindow):
def init(self, dbmodel, parent=None) -> None:
super(BorrowSystem, self).init(parent)
super().setupUi(self)
self.dbmodel = dbmodel
self.initUI()
def initUI(self):
# 设置输入框仅可输入数字
reg = QtCore.QRegExp('[0-9]+$')
validator = QtGui.QRegExpValidator()
validator.setRegExp(reg)
self.bookno.setValidator(validator)
self.studentno.setValidator(validator)
self.borrow_bookno.setValidator(validator)
self.borrow_studentno.setValidator(validator)
self.return_bookno.setValidator(validator)
self.return_studentno.setValidator(validator)
# 按钮信号与槽
self.book_add_button.clicked.connect(self.add_book)
self.book_push.clicked.connect(self.select_book)
self.student_add.clicked.connect(self.add_student)
self.student_push.clicked.connect(self.select_student)
self.borrow_push.clicked.connect(self.borrow_func)
self.return_push.clicked.connect(self.return_func)
# 线程信号
self.dbmodel.book_add_status.connect(self.book_insert_status)
self.dbmodel.student_add_status.connect(self.student_insert_status)
self.dbmodel.return_data_signal.connect(self.reload_data)
self.dbmodel.borrow_return_signal.connect(self.borrow_return_status)
self.dbmodel.start()
# 表格数据加载
self.dbmodel.select_data(model='books')
self.dbmodel.select_data(model='students')
self.dbmodel.select_data(model='borrow')
def add_book(self):
book_no, book_name, book_press, book_auth, book_price, book_count = self.bookno.text(), self.bookname.text(),
self.book_press.text(), self.book_auth.text(), self.book_price.value(), self.book_count.value()
if not all([book_no, book_name, book_press, book_auth]):
QtWidgets.QMessageBox.information(self, “提示”, “以上选项不能为空!”)
else:
self.dbmodel.insert_book(book_no, book_name, book_press, book_auth, book_price, book_count)
def book_insert_status(self, status, msg):
if status:
QtWidgets.QMessageBox.information(self, "提示", msg)
self.dbmodel.select_data(model='books')
self.bookno.setText("")
self.bookname.setText("")
self.book_press.setText("")
self.book_auth.setText("")
self.book_price.setValue(0)
self.book_count.setValue(0)
self.book_line.setText("")
else:
QtWidgets.QMessageBox.critical(self, "Error", msg)
def main():
QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)
QtGui.QGuiApplication.setAttribute(QtCore.Qt.HighDpiScaleFactorRoundingPolicy.PassThrough)
app = QtWidgets.QApplication(sys.argv)
dbmodel = SystemSQLiteModel()
status, msg = dbmodel.return_init_status
if status is True:
x = BorrowSystem(dbmodel=dbmodel)
x.show()
sys.exit(app.exec_())
else:
QtWidgets.QMessageBox.critical(None, ‘Database Error’, msg)
if name == “main”:
main()