def __init__(self, parent=None): super(changePasswordDialog, self).__init__(parent) # 设置该窗口为一个当以层次的模态窗口,阻塞它的父窗口、祖父窗口和各个兄弟窗口接受输入信息,此时能够在弹出来的对话框中接收输入法信息。 self.setWindowModality(Qt.WindowModal) self.setWindowTitle("修改密码") self.setUpUI() self.userdb = UserDbManager()
def __init__(self, userID, parent=None): super(BorrowBookDialog, self).__init__(parent) self.userID = userID self.setUpUI() self.setWindowModality(Qt.WindowModal) self.setWindowTitle("借阅书籍") self.userbookdb = UserBookManager() # 借书记录 self.bookdb = BookDbManager() # 书籍管理 self.userdb = UserDbManager() # 用户管理
def __init__(self, userid, parent=None): super(ReturnBookDialog, self).__init__(parent) self.userid = userid self.setUpUI() # 设置该窗口为一个当以层次的模态窗口,阻塞它的父窗口、祖父窗口和各个兄弟窗口接受输入信息,此时能够在弹出来的对话框中接收输入法信息。 self.setWindowModality(Qt.WindowModal) self.setWindowTitle("归还书籍") self.userbookdb = UserBookManager() # 借书记录 self.bookdb = BookDbManager() # 书籍管理 self.userdb = UserDbManager() # 用户管理
def initDBdata(self): if not os.path.exists(dbpath): self.userdb = UserDbManager() self.bookdb = BookDbManager() self.userbookdb = UserBookManager() self.addordropdb = AddOrDropManager() self.userdb.initDatabase() self.bookdb.initDatabase() self.addordropdb.initDatabase()
class ReturnBookDialog(QDialog): return_book_success_signal = pyqtSignal() def __init__(self, userid, parent=None): super(ReturnBookDialog, self).__init__(parent) self.userid = userid self.setUpUI() # 设置该窗口为一个当以层次的模态窗口,阻塞它的父窗口、祖父窗口和各个兄弟窗口接受输入信息,此时能够在弹出来的对话框中接收输入法信息。 self.setWindowModality(Qt.WindowModal) self.setWindowTitle("归还书籍") self.userbookdb = UserBookManager() # 借书记录 self.bookdb = BookDbManager() # 书籍管理 self.userdb = UserDbManager() # 用户管理 def setUpUI(self): # 书名,书号,作者,分类,添加数量.出版社,出版日期 # 书籍分类:哲学类、社会科学类、政治类、法律类、军事类、经济类、文化类、教育类、体育类、语言文字类、艺术类、历史类、地理类、天文学类、生物学类、医学卫生类、农业类 BookCategory = [ "哲学", "社会科学", "政治", "法律", "军事", "经济", "文化", "教育", "体育", "语言文字", "艺术", "历史", "地理", "天文学", "生物学", "医学卫生", "农业" ] self.resize(300, 400) self.layout = QFormLayout() self.setLayout(self.layout) # Label控件 self.returnStudentLabel = QLabel("还 书 人:") self.returnuseridLabel = QLabel(self.userid) self.titlelabel = QLabel(" 归还书籍") self.bookNameLabel = QLabel("书 名:") self.BookIDLabel = QLabel("书 号:") self.authNameLabel = QLabel("作 者:") self.categoryLabel = QLabel("分 类:") self.publisherLabel = QLabel("出 版 社:") self.publishDateLabel = QLabel("出版日期:") # button控件 self.returnBookButton = QPushButton("确认归还") # lineEdit控件 self.bookNameEdit = QLineEdit() self.BookIDEdit = QLineEdit() self.authNameEdit = QLineEdit() self.categoryComboBox = QComboBox() # 下拉菜单 self.categoryComboBox.addItems(BookCategory) # 向下拉菜单填充内容 self.publisherEdit = QLineEdit() self.publishTime = QLineEdit() self.bookNameEdit.setMaxLength(10) self.BookIDEdit.setMaxLength(6) self.authNameEdit.setMaxLength(10) self.publisherEdit.setMaxLength(10) # 添加进formlayout self.layout.addRow("", self.titlelabel) self.layout.addRow(self.returnStudentLabel, self.returnuseridLabel) self.layout.addRow(self.bookNameLabel, self.bookNameEdit) self.layout.addRow(self.BookIDLabel, self.BookIDEdit) self.layout.addRow(self.authNameLabel, self.authNameEdit) self.layout.addRow(self.categoryLabel, self.categoryComboBox) self.layout.addRow(self.publisherLabel, self.publisherEdit) self.layout.addRow(self.publishDateLabel, self.publishTime) self.layout.addRow("", self.returnBookButton) # 设置字体 font = QFont() font.setPixelSize(20) self.titlelabel.setFont(font) font.setPixelSize(16) self.returnuseridLabel.setFont(font) # font.setPixelSize(14) self.returnStudentLabel.setFont(font) self.bookNameLabel.setFont(font) self.BookIDLabel.setFont(font) self.authNameLabel.setFont(font) self.categoryLabel.setFont(font) self.publisherLabel.setFont(font) self.publishDateLabel.setFont(font) self.bookNameEdit.setFont(font) self.bookNameEdit.setReadOnly(True) # 只读模式,不可输入内容 self.bookNameEdit.setStyleSheet("background-color:#363636") # 设置背景色 灰色 self.BookIDEdit.setFont(font) self.authNameEdit.setFont(font) self.authNameEdit.setReadOnly(True) self.authNameEdit.setStyleSheet("background-color:#363636") self.publisherEdit.setFont(font) self.publisherEdit.setReadOnly(True) self.publisherEdit.setStyleSheet("background-color:#363636") self.publishTime.setFont(font) self.publishTime.setReadOnly(True) self.publishTime.setStyleSheet("background-color:#363636") self.categoryComboBox.setFont(font) # QComboBox没有readonly属性 self.categoryComboBox.setStyleSheet("background-color:#363636") # button设置 font.setPixelSize(16) self.returnBookButton.setFont(font) self.returnBookButton.setFixedHeight(32) self.returnBookButton.setFixedWidth(140) # 设置间距 self.titlelabel.setMargin(8) # 距离窗体的间距 self.layout.setVerticalSpacing(10) # 控件之间的距离 self.returnBookButton.clicked.connect(self.returnButtonClicked) self.BookIDEdit.textChanged.connect(self.BookIDEditChanged) # 监控输入框 # self.BookIDEdit.returnPressed.connect(self.BookIDEditChanged) def returnButtonClicked(self): # 获取书号,书号为空或并未借阅,则弹出错误 # 更新Book_User表User表以及Book表 BookID = self.BookIDEdit.text() # BookID为空的处理 if (BookID == ""): print( QMessageBox.warning(self, "警告", "你所要还的书不存在,请查看输入", QMessageBox.Yes, QMessageBox.Yes)) return # 如果未借阅 borrowbook = self.userbookdb.borrowStatus(self.userid, BookID) if (not borrowbook[0][0]): print( QMessageBox.information(self, "提示", "您并未借阅此书,故无需归还", QMessageBox.Yes, QMessageBox.Yes)) return # 更新User表 self.userdb.borrowOrReturnBook(self.userid, borrow=0) # 更新Book表 self.bookdb.borrowOrReturnBook(BookID, borrowflag=0) # 更新User_Book表 timenow = time.strftime('%Y-%m-%d', time.localtime(time.time())) self.userbookdb.borrowOrReturnBook(self.userid, BookID, timenow, borrowflag=0) print( QMessageBox.information(self, "提示", "归还成功!", QMessageBox.Yes, QMessageBox.Yes)) self.return_book_success_signal.emit() self.close() return def BookIDEditChanged(self): BookID = self.BookIDEdit.text() if (BookID == ""): self.bookNameEdit.clear() self.publisherEdit.clear() self.authNameEdit.clear() self.publishTime.clear() # 在User_Book表中找借阅记录,如果存在借阅,则更新form内容 borrowbook = self.userbookdb.borrowStatus(self.userid, BookID) if (borrowbook[0][0]): # 根据BookID查询书籍信息,更新form内容 # 查询对应书号,如果存在就更新form bookinfo = self.bookdb.querybyBookID(BookID) if (bookinfo): self.bookNameEdit.setText(bookinfo[0][0]) self.authNameEdit.setText(bookinfo[0][2]) self.categoryComboBox.setCurrentText(bookinfo[0][3]) self.publisherEdit.setText(bookinfo[0][4]) self.publishTime.setText(bookinfo[0][5]) return
def __init__(self): super().__init__() self.resize(900, 600) self.setWindowTitle("欢迎使用图书馆管理系统") self.setUpUI() self.userdb = UserDbManager()
class SignInWidget(QWidget): is_admin_signal = pyqtSignal() is_student_signal = pyqtSignal(str) def __init__(self): super().__init__() self.resize(900, 600) self.setWindowTitle("欢迎使用图书馆管理系统") self.setUpUI() self.userdb = UserDbManager() def setUpUI(self): self.Vlayout = QVBoxLayout(self) self.HlayoutTitle = QHBoxLayout() #标题 self.HlayoutWidgetForm = QHBoxLayout() self.formlayout = QFormLayout() self.labelAccount = QLabel("帐 号:") labelFont = QFont() labelFont.setPixelSize(18) lineEditFont = QFont() lineEditFont.setPixelSize(16) self.labelAccount.setFont(labelFont) self.lineEditAccount = QLineEdit() self.lineEditAccount.setFixedHeight(32) self.lineEditAccount.setFixedWidth(180) self.lineEditAccount.setFont(lineEditFont) self.lineEditAccount.setMaxLength(10) self.formlayout.addRow(self.labelAccount, self.lineEditAccount) self.labelPassword = QLabel("密 码:") self.labelPassword.setFont(labelFont) self.lineEditPassword = QLineEdit() self.lineEditPassword.setFixedHeight(32) self.lineEditPassword.setFixedWidth(180) self.lineEditPassword.setMaxLength(16) # 设置验证 reg = QRegExp("PB[0~9]{8}") pValidator = QRegExpValidator(self) pValidator.setRegExp(reg) self.lineEditAccount.setValidator(pValidator) reg = QRegExp("[a-zA-z0-9]+$") pValidator.setRegExp(reg) self.lineEditPassword.setValidator(pValidator) passwordFont = QFont() passwordFont.setPixelSize(16) self.lineEditPassword.setFont(passwordFont) self.lineEditPassword.setEchoMode(QLineEdit.Password) # 输入后就显示为星号 self.lineEditPassword.setEchoMode( QLineEdit.PasswordEchoOnEdit) # 输入时为字符,失去焦点为星号 self.formlayout.addRow(self.labelPassword, self.lineEditPassword) self.signIn = QPushButton("登 录") self.signIn.setFixedWidth(70) self.signIn.setFixedHeight(30) self.signIn.setFont(labelFont) self.signCancle = QPushButton("重 置") self.signCancle.setFixedWidth(70) self.signCancle.setFixedHeight(30) self.signCancle.setFont(labelFont) self.signCancle.setStyleSheet( 'background-color: #505F69;border: 1px solid #32414B;color: #F0F0F0;border-radius: 4px;padding: 3px;outline: none;' ) self.testlayout = QHBoxLayout() self.testlayout.addWidget(self.signIn) self.testlayout.addWidget(self.signCancle) self.testwidget = QWidget() self.testwidget.setLayout(self.testlayout) #包含登录,取消两个按钮 self.formlayout.addRow('', self.testwidget) #把testwidget加入到formlayout #formlayout 两个label, 两个LineEdit,两个按钮 self.labelTitle = QLabel("欢迎使用图书馆管理系统") fontlabel = QFont() fontlabel.setPixelSize(30) self.labelTitle.setFixedWidth(390) # pixmap=QPixmap('index.jpg').scaled(self.labelTitle.width(), self.labelTitle.height()) # self.labelTitle.setPixmap(pixmap) # self.labelTitle.setStyleSheet("QLabel{background-image:url(index.jpg)}") # self.labelTitle.setFixedHeight(80) #不设置宽度了 self.labelTitle.setFont(fontlabel) self.HlayoutTitle.addWidget(self.labelTitle, Qt.AlignCenter) #标题 self.widgetTitle = QWidget() self.widgetTitle.setLayout(self.HlayoutTitle) #标题 self.widgetForm = QWidget() self.widgetForm.setFixedWidth(300) self.widgetForm.setFixedHeight(150) self.widgetForm.setLayout(self.formlayout) self.widgetForm.setStyleSheet( ".QWidget{border-image:url(./images/baise.png)}") #设置widgets背景色 #widgetForm上存放6个控件 self.HlayoutWidgetForm.addWidget(self.widgetForm, Qt.AlignCenter) self.widget = QWidget() self.widget.setLayout(self.HlayoutWidgetForm) # background-image,当背景图片宽度高度小于窗口的宽度高度时,则会加载多个背景图片 # background-image,当背景图片的宽度高度大于窗口的宽度高度时,背景图片会平铺整个背景 # self.widget1.setStyleSheet("QWidget{background-image:url(index.jpg);}") #设置背景图片 self.widget.setStyleSheet( ".QWidget{border-image:url(./images/lasa.jpg)}" ) #加.号表示只对当前控件有效,否则对子控件也有效 self.widgetTitle.setStyleSheet("color:green") #设置字体颜色 #self.widgetTitle.setStyleSheet("color:red; background:yellow") #设置字体颜色和背景颜色 self.Vlayout.addWidget(self.widgetTitle) #Vlayout层包含两个Widget垂直布局 self.Vlayout.addWidget(self.widget, Qt.AlignTop) #self.Vlayout.addWidget(self.widgetForm, Qt.AlignTop) self.signIn.clicked.connect(self.signInCheck) self.signCancle.clicked.connect(self.signInCancleReset) self.lineEditPassword.returnPressed.connect(self.signInCheck) self.lineEditAccount.returnPressed.connect(self.signInCheck) def signInCancleReset(self): self.lineEditAccount.clear() self.lineEditPassword.clear() def signInCheck(self): studentId = self.lineEditAccount.text() password = self.lineEditPassword.text() if (studentId == "" or password == ""): print( QMessageBox.warning(self, "警告", "学号和密码不可为空!", QMessageBox.Yes, QMessageBox.Yes)) return hl = hashlib.md5() # md5加密对象 hl.update(password.encode(encoding='utf-8')) # 将密码更新为MD5加密对象 userdata = self.userdb.querybyUserid(studentId) print(userdata) if (not userdata): # QMessageBox.information()返回值是一个整形变量,是点击按钮所代表的值 # QMessageBox.Yes = 16384 # QMessageBox.No = 65536 # QMessageBox.Close = 2097152 # QMessageBox.Abort = 262144 # QMessageBox.Help = 16777216 print( QMessageBox.information(self, "提示", "该账号不存在,请重新输入!", QMessageBox.Yes)) self.signInCancleReset() else: # 将输入的密码经过MD5加密之后,重新跟数据库中的值对比 print(userdata[0][0]) print(userdata[0][1]) print(userdata[0][2]) print(userdata[0][3]) print(userdata[0][4]) if (studentId == userdata[0][0] and hl.hexdigest() == userdata[0][2]): # 如果是管理员, 再在数据库中,第三项代表是否是管理员,1为管理员,0不是 if (userdata[0][3] == 1): self.is_admin_signal.emit() print('admin login success') QMessageBox.information(self, "提示", studentId + " 管理员登录成功", QMessageBox.Yes, QMessageBox.Yes) else: self.is_student_signal.emit(studentId) print(studentId + ' login success') QMessageBox.information(self, "提示", studentId + " 登录成功", QMessageBox.Yes, QMessageBox.Yes) else: print( QMessageBox.information(self, "提示", "密码错误!", QMessageBox.Yes, QMessageBox.Yes)) return
class Main(QMainWindow): def __init__(self, parent=None): super(Main, self).__init__(parent) self.initDBdata() self.layout = QHBoxLayout() self.widget = SignInWidget() self.resize(900, 600) self.setWindowTitle("欢迎登陆图书馆管理系统") self.setCentralWidget(self.widget) bar = self.menuBar() self.Menu = bar.addMenu("菜单栏") self.signUpAction = QAction("注册", self) self.changePasswordAction = QAction("修改密码", self) self.signInAction = QAction("登录", self) self.quitSignInAction = QAction("退出登录", self) self.quitAction = QAction("退出", self) self.Menu.addAction(self.signUpAction) self.Menu.addAction(self.changePasswordAction) self.Menu.addAction(self.signInAction) self.Menu.addAction(self.quitSignInAction) self.Menu.addAction(self.quitAction) self.signUpAction.setEnabled(True) self.changePasswordAction.setEnabled(True) self.signInAction.setEnabled(False) self.quitSignInAction.setEnabled(False) self.widget.is_admin_signal.connect(self.adminSignIn) self.widget.is_student_signal[str].connect(self.studentSignIn) self.Menu.triggered[QAction].connect(self.menuTriggered) def initDBdata(self): if not os.path.exists(dbpath): self.userdb = UserDbManager() self.bookdb = BookDbManager() self.userbookdb = UserBookManager() self.addordropdb = AddOrDropManager() self.userdb.initDatabase() self.bookdb.initDatabase() self.addordropdb.initDatabase() def adminSignIn(self): sip.delete(self.widget) self.widget = AdminHome() self.setCentralWidget(self.widget) self.changePasswordAction.setEnabled(False) self.signUpAction.setEnabled(True) self.signInAction.setEnabled(False) self.quitSignInAction.setEnabled(True) def studentSignIn(self, studentId): sip.delete(self.widget) self.widget = StudentHome(studentId) self.setCentralWidget(self.widget) self.changePasswordAction.setEnabled(False) self.signUpAction.setEnabled(True) self.signInAction.setEnabled(False) self.quitSignInAction.setEnabled(True) def menuTriggered(self, q): if (q.text() == "修改密码"): changePsdDialog = changePasswordDialog(self) changePsdDialog.show() changePsdDialog.exec_() if (q.text() == "注册"): sip.delete(self.widget) self.widget = SignUpWidget() self.setCentralWidget(self.widget) self.widget.student_signup_signal[str].connect(self.studentSignIn) self.signUpAction.setEnabled(False) self.changePasswordAction.setEnabled(True) self.signInAction.setEnabled(True) self.quitSignInAction.setEnabled(False) if (q.text() == "退出登录"): sip.delete(self.widget) self.widget = SignInWidget() self.setCentralWidget(self.widget) self.widget.is_admin_signal.connect(self.adminSignIn) self.widget.is_student_signal[str].connect(self.studentSignIn) self.signUpAction.setEnabled(True) self.changePasswordAction.setEnabled(True) self.signInAction.setEnabled(False) self.quitSignInAction.setEnabled(False) if (q.text() == "登录"): sip.delete(self.widget) self.widget = SignInWidget() self.setCentralWidget(self.widget) self.widget.is_admin_signal.connect(self.adminSignIn) self.widget.is_student_signal[str].connect(self.studentSignIn) self.signUpAction.setEnabled(True) self.changePasswordAction.setEnabled(True) self.signInAction.setEnabled(False) self.quitSignInAction.setEnabled(False) if (q.text() == "退出"): qApp = QApplication.instance() qApp.quit() return
class BorrowBookDialog(QDialog): borrow_book_success_signal = pyqtSignal() def __init__(self, userID, parent=None): super(BorrowBookDialog, self).__init__(parent) self.userID = userID self.setUpUI() self.setWindowModality(Qt.WindowModal) self.setWindowTitle("借阅书籍") self.userbookdb = UserBookManager() # 借书记录 self.bookdb = BookDbManager() # 书籍管理 self.userdb = UserDbManager() # 用户管理 def setUpUI(self): # 书名,书号,作者,分类,添加数量.出版社,出版日期 # 书籍分类:哲学类、社会科学类、政治类、法律类、军事类、经济类、文化类、教育类、体育类、语言文字类、艺术类、历史类、地理类、天文学类、生物学类、医学卫生类、农业类 BookCategory = ["哲学", "社会科学", "政治", "法律", "军事", "经济", "文化", "教育", "体育", "语言文字", "艺术", "历史" , "地理", "天文学", "生物学", "医学卫生", "农业"] self.resize(300, 400) self.layout = QFormLayout() self.setLayout(self.layout) # Label控件 self.borrowStudentLabel = QLabel("借 阅 人:") self.borrowuserIDLabel = QLabel(self.userID) self.titlelabel = QLabel(" 借阅书籍") self.bookNameLabel = QLabel("书 名:") self.BookIDLabel = QLabel("书 号:") self.authNameLabel = QLabel("作 者:") self.categoryLabel = QLabel("分 类:") self.publisherLabel = QLabel("出 版 社:") self.publishDateLabel = QLabel("出版日期:") # button控件 self.borrowBookButton = QPushButton("确认借阅") # lineEdit控件 self.bookNameEdit = QLineEdit() self.BookIDEdit = QLineEdit() self.authNameEdit = QLineEdit() self.categoryComboBox = QComboBox() self.categoryComboBox.addItems(BookCategory) self.publisherEdit = QLineEdit() self.publishTime = QLineEdit() self.bookNameEdit.setMaxLength(10) self.BookIDEdit.setMaxLength(6) self.authNameEdit.setMaxLength(10) self.publisherEdit.setMaxLength(10) # 添加进formlayout self.layout.addRow("", self.titlelabel) self.layout.addRow(self.borrowStudentLabel, self.borrowuserIDLabel) self.layout.addRow(self.bookNameLabel, self.bookNameEdit) self.layout.addRow(self.BookIDLabel, self.BookIDEdit) self.layout.addRow(self.authNameLabel, self.authNameEdit) self.layout.addRow(self.categoryLabel, self.categoryComboBox) self.layout.addRow(self.publisherLabel, self.publisherEdit) self.layout.addRow(self.publishDateLabel, self.publishTime) self.layout.addRow("", self.borrowBookButton) # 设置字体 font = QFont() font.setPixelSize(20) self.titlelabel.setFont(font) font.setPixelSize(16) self.borrowuserIDLabel.setFont(font) font.setPixelSize(14) self.borrowStudentLabel.setFont(font) self.bookNameLabel.setFont(font) self.BookIDLabel.setFont(font) self.authNameLabel.setFont(font) self.categoryLabel.setFont(font) self.publisherLabel.setFont(font) self.publishDateLabel.setFont(font) self.bookNameEdit.setFont(font) self.bookNameEdit.setReadOnly(True) self.bookNameEdit.setStyleSheet("background-color:#363636") self.BookIDEdit.setFont(font) self.authNameEdit.setFont(font) self.authNameEdit.setReadOnly(True) self.authNameEdit.setStyleSheet("background-color:#363636") self.publisherEdit.setFont(font) self.publisherEdit.setReadOnly(True) self.publisherEdit.setStyleSheet("background-color:#363636") self.publishTime.setFont(font) self.publishTime.setStyleSheet("background-color:#363636") self.categoryComboBox.setFont(font) self.categoryComboBox.setStyleSheet("background-color:#363636") # button设置 font.setPixelSize(16) self.borrowBookButton.setFont(font) self.borrowBookButton.setFixedHeight(32) self.borrowBookButton.setFixedWidth(140) # 设置间距 self.titlelabel.setMargin(8) self.layout.setVerticalSpacing(10) self.borrowBookButton.clicked.connect(self.borrowButtonClicked) self.BookIDEdit.textChanged.connect(self.BookIDEditChanged) self.BookIDEdit.returnPressed.connect(self.borrowButtonClicked) def borrowButtonClicked(self): # 获取书号,书号为空或不存在库中,则弹出错误 # 向Book_User表插入记录,更新User表以及Book表 BookID = self.BookIDEdit.text() # BookID为空的处理 if (BookID == ""): print(QMessageBox.warning(self, "警告", "你所要借的书不存在,请查看输入", QMessageBox.Yes, QMessageBox.Yes)) return bookinfo = self.bookdb.querybyBookID(BookID) if (not bookinfo): print(QMessageBox.warning(self, "警告", "你所要借的书不存在,请查看输入", QMessageBox.Yes, QMessageBox.Yes)) return # 借书上限5本 borrowNum = self.userbookdb.countBorrowNum(self.userID) if (borrowNum): print('節約了几本書= %d' % borrowNum[0][0]) borrowNum = borrowNum[0][0] if (borrowNum >= 5): QMessageBox.warning(self, "警告", "您借阅的书达到上限(5本),借书失败!", QMessageBox.Yes, QMessageBox.Yes) return # 不允许重复借书 borrowNum = self.userbookdb.borrowStatus(self.userID, BookID) print(borrowNum[0][0]) if (borrowNum[0][0]): QMessageBox.warning(self, "警告", "您已经借阅了本书并尚未归还,借阅失败!", QMessageBox.Yes, QMessageBox.Yes) return # 更新User表 self.userdb.borrowOrReturnBook(self.userID, borrow=1) # 更新Book表 self.bookdb.borrowOrReturnBook(BookID, borrowflag=1) # 插入User_Book表 timenow = time.strftime('%Y-%m-%d', time.localtime(time.time())) self.userbookdb.borrowOrReturnBook(self.userID, BookID, timenow, borrowflag=1) print(QMessageBox.information(self, "提示", "借阅成功!", QMessageBox.Yes, QMessageBox.Yes)) self.borrow_book_success_signal.emit() self.close() return def BookIDEditChanged(self): BookID = self.BookIDEdit.text() if (BookID == ""): self.bookNameEdit.clear() self.publisherEdit.clear() self.authNameEdit.clear() self.publishTime.clear() bookinfo = self.bookdb.querybyBookID(BookID) # 查询对应书号,如果存在就更新form if (bookinfo): self.bookNameEdit.setText(bookinfo[0][0]) self.authNameEdit.setText(bookinfo[0][2]) self.categoryComboBox.setCurrentText(bookinfo[0][3]) self.publisherEdit.setText(bookinfo[0][4]) self.publishTime.setText(bookinfo[0][5]) return
class changePasswordDialog(QDialog): def __init__(self, parent=None): super(changePasswordDialog, self).__init__(parent) # 设置该窗口为一个当以层次的模态窗口,阻塞它的父窗口、祖父窗口和各个兄弟窗口接受输入信息,此时能够在弹出来的对话框中接收输入法信息。 self.setWindowModality(Qt.WindowModal) self.setWindowTitle("修改密码") self.setUpUI() self.userdb = UserDbManager() def setUpUI(self): self.resize(300, 280) self.layout = QFormLayout() self.setLayout(self.layout) self.titlelabel = QLabel(" 修改密码") self.userIDLabel = QLabel("账 号:") # self.studentNameLabel=QLabel("姓 名:") self.oldPasswordLabel = QLabel("旧 密 码:") self.passwordLabel = QLabel("新 密 码:") self.confirmPasswordLabel = QLabel("确认密码:") self.userIDEdit = QLineEdit() # self.studentNameEdit=QLineEdit() self.oldPasswordEdit = QLineEdit() self.passwordEdit = QLineEdit() self.confirmPasswordEdit = QLineEdit() self.changePasswordButton = QPushButton("确认修改") self.changePasswordButton.setFixedWidth(140) self.changePasswordButton.setFixedHeight(32) self.layout.addRow("", self.titlelabel) self.layout.addRow(self.userIDLabel, self.userIDEdit) # self.layout.addRow(self.studentNameLabel,self.studentNameEdit) self.layout.addRow(self.oldPasswordLabel, self.oldPasswordEdit) self.layout.addRow(self.passwordLabel, self.passwordEdit) self.layout.addRow(self.confirmPasswordLabel, self.confirmPasswordEdit) self.layout.addRow("", self.changePasswordButton) font = QFont() font.setPixelSize(20) self.titlelabel.setFont(font) font.setPixelSize(16) self.userIDLabel.setFont(font) self.userIDEdit.setFont(font) # self.studentNameLabel.setFont(font) # self.studentNameEdit.setFont(font) self.oldPasswordLabel.setFont(font) self.oldPasswordEdit.setFont(font) self.passwordLabel.setFont(font) self.passwordEdit.setFont(font) self.confirmPasswordLabel.setFont(font) self.confirmPasswordEdit.setFont(font) self.changePasswordButton.setFont(font) self.titlelabel.setMargin(8) # 控件与窗体的左右边距为8 self.layout.setVerticalSpacing(10) # 控件与控件的边距为8,Layout拥有得属性 # 设置长度 self.userIDEdit.setMaxLength(10) self.oldPasswordEdit.setMaxLength(16) self.passwordEdit.setMaxLength(16) self.confirmPasswordEdit.setMaxLength(16) # 设置密码掩膜 # QLineEdit.Password输入字符后就立马显示为星号 # QLineEdit.PasswordEchoOnEdit为输入时为字符,失去焦点为星号 ##self.oldPasswordEdit.setEchoMode(QLineEdit.Password) ##self.passwordEdit.setEchoMode(QLineEdit.Password) ##self.confirmPasswordEdit.setEchoMode(QLineEdit.Password) self.oldPasswordEdit.setEchoMode(QLineEdit.PasswordEchoOnEdit) self.passwordEdit.setEchoMode(QLineEdit.PasswordEchoOnEdit) self.confirmPasswordEdit.setEchoMode(QLineEdit.PasswordEchoOnEdit) # 设置校验 reg = QRegExp("PB[0~9]{8}") pValidator = QRegExpValidator(self) pValidator.setRegExp(reg) self.userIDEdit.setValidator(pValidator) reg = QRegExp("[a-zA-z0-9]+$") pValidator.setRegExp(reg) self.oldPasswordEdit.setValidator(pValidator) self.passwordEdit.setValidator(pValidator) self.confirmPasswordEdit.setValidator(pValidator) # 设置信号与槽 self.changePasswordButton.clicked.connect(self.changePasswordButtonClicked) def changePasswordButtonClicked(self): userID = self.userIDEdit.text() oldPassword = self.oldPasswordEdit.text() password = self.passwordEdit.text() confirmPassword = self.confirmPasswordEdit.text() if (userID == "" or oldPassword == "" or password == "" or confirmPassword == ""): print(QMessageBox.warning(self, "警告", "输入不可为空,请重新输入", QMessageBox.Yes, QMessageBox.Yes)) return # 密码与确认密码不同 if (password != confirmPassword): print(QMessageBox.warning(self, "警告", "两次输入密码不同,请确认输入", QMessageBox.Yes, QMessageBox.Yes)) self.passwordEdit.clear() self.confirmPasswordEdit.clear() return userinfo = self.userdb.querybyUserid(userID) # 如果用户不存在 if (not userinfo): print(QMessageBox.warning(self, "警告", "该用户不存在,请重新输入", QMessageBox.Yes, QMessageBox.Yes)) self.userIDEdit.clear() return # 如果密码错误 hl = hashlib.md5() hl.update(oldPassword.encode(encoding='utf-8')) md5password = hl.hexdigest() if (md5password != userinfo[0][2]): print(QMessageBox.warning(self, "警告", "原密码输入错误,请重新输入", QMessageBox.Yes, QMessageBox.Yes)) self.oldPasswordEdit.clear() return # 修改密码 hl = hashlib.md5() hl.update(password.encode(encoding='utf-8')) newmd5password = hl.hexdigest() self.userdb.updatePassword(newmd5password, userID) QMessageBox.information(self, "提醒", "修改密码成功,请登录系统!", QMessageBox.Yes, QMessageBox.Yes) self.close() return