1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
| import sys from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import * import qdarkstyle import hashlib from PyQt5.QtSql import *
class SignInWidget(QWidget): is_admin_signal = pyqtSignal() is_student_signal = pyqtSignal(str)
def __init__(self): super(SignInWidget, self).__init__() self.resize(900, 600) self.setWindowTitle("欢迎使用图书馆管理系统") self.setUpUI()
def setUpUI(self): self.Vlayout = QVBoxLayout(self) self.Hlayout1 = QHBoxLayout() self.Hlayout2 = QHBoxLayout() self.formlayout = QFormLayout()
self.label1 = QLabel("学号: ") labelFont = QFont() labelFont.setPixelSize(18) lineEditFont = QFont() lineEditFont.setPixelSize(16) self.label1.setFont(labelFont) self.lineEdit1 = QLineEdit() self.lineEdit1.setFixedHeight(32) self.lineEdit1.setFixedWidth(180) self.lineEdit1.setFont(lineEditFont) self.lineEdit1.setMaxLength(10)
self.formlayout.addRow(self.label1, self.lineEdit1)
self.label2 = QLabel("密码: ") self.label2.setFont(labelFont) self.lineEdit2 = QLineEdit() self.lineEdit2.setFixedHeight(32) self.lineEdit2.setFixedWidth(180) self.lineEdit2.setMaxLength(16)
# 设置验证 reg = QRegExp("PB[0~9]{8}") pValidator = QRegExpValidator(self) pValidator.setRegExp(reg) self.lineEdit1.setValidator(pValidator)
reg = QRegExp("[a-zA-z0-9]+$") pValidator.setRegExp(reg) self.lineEdit2.setValidator(pValidator)
passwordFont = QFont() passwordFont.setPixelSize(10) self.lineEdit2.setFont(passwordFont)
self.lineEdit2.setEchoMode(QLineEdit.Password) self.formlayout.addRow(self.label2, self.lineEdit2) self.signIn = QPushButton("登 录") self.signIn.setFixedWidth(80) self.signIn.setFixedHeight(30) self.signIn.setFont(labelFont) self.formlayout.addRow("", self.signIn)
self.label = QLabel("欢迎使用图书馆管理系统") fontlabel = QFont() fontlabel.setPixelSize(30) self.label.setFixedWidth(390) # self.label.setFixedHeight(80) self.label.setFont(fontlabel) self.Hlayout1.addWidget(self.label, Qt.AlignCenter) self.widget1 = QWidget() self.widget1.setLayout(self.Hlayout1) self.widget2 = QWidget() self.widget2.setFixedWidth(300) self.widget2.setFixedHeight(150) self.widget2.setLayout(self.formlayout) self.Hlayout2.addWidget(self.widget2, Qt.AlignCenter) self.widget = QWidget() self.widget.setLayout(self.Hlayout2) self.Vlayout.addWidget(self.widget1) self.Vlayout.addWidget(self.widget, Qt.AlignTop)
self.signIn.clicked.connect(self.signInCheck) self.lineEdit2.returnPressed.connect(self.signInCheck) self.lineEdit1.returnPressed.connect(self.signInCheck)
def signInCheck(self): studentId = self.lineEdit1.text() password = self.lineEdit2.text() if (studentId == "" or password == ""): print(QMessageBox.warning(self, "警告", "学号和密码不可为空!", QMessageBox.Yes, QMessageBox.Yes)) return # 打开数据库连接 db = QSqlDatabase.addDatabase("QSQLITE") db.setDatabaseName('./db/LibraryManagement.db') db.open() query = QSqlQuery() sql = "SELECT * FROM user WHERE StudentId='%s'" % (studentId) query.exec_(sql) db.close()
hl = hashlib.md5() hl.update(password.encode(encoding='utf-8')) if (not query.next()): print(QMessageBox.information(self, "提示", "该账号不存在!", QMessageBox.Yes, QMessageBox.Yes)) else: if (studentId == query.value(0) and hl.hexdigest() == query.value(2)): # 如果是管理员 if (query.value(3)==1): self.is_admin_signal.emit() else: self.is_student_signal.emit(studentId) else: print(QMessageBox.information(self, "提示", "密码错误!", QMessageBox.Yes, QMessageBox.Yes)) return
if __name__ == "__main__": app = QApplication(sys.argv) app.setWindowIcon(QIcon("./images/MainWindow_1.png")) app.setStyleSheet(qdarkstyle.load_stylesheet_pyqt5()) mainMindow = SignInWidget() mainMindow.show() sys.exit(app.exec_())
|