基于PyQT5的图书管理系统
用pycharm导入项目,配置好python环境,安装一下pyqt5的依赖包,用navicate连接本地Mysql数据库,手工创建数据库(名字在代码里面有),然后执行一下sql语句,最后运行程序,就可以自动出来界面
项目大概结构
管理员登录界面
import sys
import pymysql
import my_db
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap, QFont, QIcon
from PyQt5.QtWidgets import QWidget, QApplication, QLabel, QDesktopWidget, QHBoxLayout, QFormLayout, \
QPushButton, QLineEdit, QMessageBox
import Manage
class LoginForm(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
"""
初始化UI
:return:
"""
self.setObjectName("loginWindow")
self.setStyleSheet('#loginWindow{background-color:white}')
self.setFixedSize(650, 400)
self.setWindowTitle("图书管理管理系统")
# 添加顶部logo图片
pixmap = QPixmap("img/header.png")
scared_pixmap = pixmap.scaled(650, 140)
label = QLabel(self)
label.setPixmap(scared_pixmap)
# 绘制顶部文字
lbl_logo = QLabel(self)
lbl_logo.setStyleSheet("QWidget{color:white;font-weight:600;background: transparent;font-size:30px;}")
lbl_logo.setFont(QFont("Microsoft YaHei"))
lbl_logo.move(150, 50)
lbl_logo.setAlignment(Qt.AlignCenter)
lbl_logo.raise_()
# 登录表单内容部分
login_widget = QWidget(self)
login_widget.move(0, 140)
login_widget.setGeometry(0, 140, 650, 260)
hbox = QHBoxLayout()
# 添加左侧logo
logolb = QLabel(self)
logopix = QPixmap("static/logo.png")
logopix_scared = logopix.scaled(100, 100)
logolb.setPixmap(logopix_scared)
logolb.setAlignment(Qt.AlignCenter)
hbox.addWidget(logolb, 1)
# 添加右侧表单
fmlayout = QFormLayout()
lbl_workerid = QLabel("用户名")
lbl_workerid.setFont(QFont("Microsoft YaHei"))
self.led_workerid = QLineEdit()
self.led_workerid.setFixedWidth(270)
self.led_workerid.setFixedHeight(38)
lbl_pwd = QLabel("密码")
lbl_pwd.setFont(QFont("Microsoft YaHei"))
self.led_pwd = QLineEdit()
self.led_pwd.setEchoMode(QLineEdit.Password)
self.led_pwd.setFixedWidth(270)
self.led_pwd.setFixedHeight(38)
btn_login = QPushButton("登录")
btn_login.setFixedWidth(270)
btn_login.setFixedHeight(40)
btn_login.setFont(QFont("Microsoft YaHei"))
btn_login.setObjectName("login_btn")
btn_login.setStyleSheet("#login_btn{background-color:#2c7adf;color:#fff;border:none;border-radius:4px;}")
btn_login.clicked.connect(self.login_check)
fmlayout.addRow(lbl_workerid, self.led_workerid)
fmlayout.addRow(lbl_pwd, self.led_pwd)
fmlayout.addWidget(btn_login)
hbox.setAlignment(Qt.AlignCenter)
# 调整间距
fmlayout.setHorizontalSpacing(20)
fmlayout.setVerticalSpacing(12)
hbox.addLayout(fmlayout, 2)
login_widget.setLayout(hbox)
self.center()
self.show()
def login_check(self):
"""
登录认证
:return:
"""
global is_passed
check = 0
phone = self.led_workerid.text()
password = self.led_pwd.text()
conn = pymysql.connect(host=my_db.host, user=my_db.user, db=my_db.db, password=my_db.password)
cursor = conn.cursor()
sql = "select * from user where phone=%s and password=%s"%(phone, password)
try:
print(sql)
cursor.execute(sql)
data = cursor.fetchall()
except Exception as e:
conn.rollback()
print('数据库操作失败', e)
if data.__len__() > 0:
check = 1 # 检查通过
QMessageBox.about(self, '成功', '登录成功,即将跳转!')
if check == 0:
QMessageBox.warning(self, "错误", "用户名或密码错误", QMessageBox.Yes)
else:
is_passed = 1
self.close()
def center(self):
qr = self.frameGeometry()
cp = QDesktopWidget().availableGeometry().center()
qr.moveCenter(cp)
self.move(qr.topLeft())
if __name__ == "__main__":
is_passed = 0 # 判断是否登录成功,成功后为1
app = QApplication(sys.argv)
ex = LoginForm()
ex.show()
app.exec_()
if (is_passed is 0):
sys.exit(0)
app2 = QApplication(sys.argv)
Manage.start()
sys.exit(app2.exec_())
操作首页
图书查询