├── .gitignore
├── README.md
├── bookdb.sql
├── compile_ui.bat
├── database
└── connector.py
├── lib
└── share.py
├── main.py
├── model
├── bookinfomodel.py
└── userinfomodel.py
├── readme_src
├── 修改UI.png
├── 编译.png
├── 配置python.png
└── 配置python2.png
├── requirements.txt
├── view
├── bookinfoviewforadmin.py
├── bookinfoviewforreader.py
└── userinfoview.py
├── widget
├── addbookwidget.py
├── addbookwidget.ui
├── administerloginwidget.py
├── administerloginwidget.ui
├── adminwidget.py
├── adminwidget.ui
├── borrowwidget.py
├── borrowwidget.ui
├── mainwindow.py
├── mainwindow.ui
├── readerloginwidget.py
├── readerloginwidget.ui
├── registerwidget.py
├── registerwidget.ui
├── ui_addbookwidget.py
├── ui_administerloginwidget.py
├── ui_adminwidget.py
├── ui_borrowwidget.py
├── ui_mainwindow.py
├── ui_readerloginwidget.py
└── ui_registerwidget.py
└── 数据库实验作业要求.docx
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea/
2 | venv/
3 | __pycache__/
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ### 2023/7/3更新
2 |
3 | 上传代码后不断有人点赞并且提issue,说明这个实验课还在开。所以我把代码重构了一下,弄得稍微好看了一点。
4 |
5 | ## 一、说明
6 |
7 | 考虑到这是数据库的实验课,我用了尽量简单的方式写代码。没有任何分层架构,也没有服务器,UI直接通过SQL语句操作数据库。
8 |
9 | UI库用的是Pyside6,数据库用的是MySQL 8.0
10 |
11 | 实验要求见`./数据库实验作业要求.docx`
12 |
13 | ## 二、如何运行
14 |
15 | ### (1) 准备环境
16 |
17 | #### 1. 安装MySQL 8
18 |
19 | 如何安装自行百度,MySQL 8以上版本应该都可以。版本过低可能会造成pymysql不兼容
20 |
21 | #### 2. 配置MySQL
22 |
23 | 用户名密码都设置为root,端口号设置为3306。如果你要设置自己的用户名密码和端口号,需要把代码里的也改了,在`./database/connector.py`里面。
24 |
25 | #### 3. 配置数据库
26 |
27 | 运行`./bookdb.sql`里面的所有SQL语句。运行后会创建一个bookdb数据库,里面保存了图书管理系统需要的信息,里面初始化了一个管理员(帐号和密码都是admin)、一个用户(用户信息在sql文件里面自己找)和几本书籍
28 |
29 | #### 4. 安装Python
30 |
31 | 如何安装Python也自行百度,我的本机环境是Python 3.10。和3.10相差不大应该也可以。
32 |
33 | 注意安装的时候一定要勾选**加入环境变量**(如果你会创建Python虚拟环境就不用)
34 |
35 | #### 5. 配置Python
36 |
37 | 有两种方式:
38 |
39 | + 如果你用Python比较熟,会创建虚拟环境,看这里。不熟的话跳过这部分看下面
40 |
41 | 创建完虚拟环境之后,在你创建的虚拟环境下运行终端(我以PyCharm举例)
42 |
43 | 注意最前面的`(venv)`,这个是你创建的虚拟环境的名称,一会代码一定要在这个虚拟幻境里跑,要不然就白配置了
44 |
45 | 然后输入`pip install -r requirements.txt`回车
46 |
47 | 接下来就会自动下载安装所需要的包,如下图所示(我已经安装过了,所以显示Requirement already satisfied)
48 |
49 | 
50 |
51 | + 如果你对Python不熟,那看这里:
52 |
53 | 在当前项目所在文件夹打开控制台,输入`pip install -r requirements.txt`回车。
54 |
55 | 如果提示`'pip' 不是内部或外部命令,也不是可运行的程序
56 | 或批处理文件。`,说明你的Python没有加入环境变量。如何加入环境变量自行百度,注意一定要把Python目录和Scripts目录都加入环境变量!!
57 |
58 | 如果你的控制台输出像下面一样就成功了。
59 |
60 | 
61 |
62 | 注意最后一定要输出`Successfully installed ......`
63 |
64 | 如果没有输出这个,说明前面有报错。这种情况你可以试一下把Python**重新安装**并且版本为**3.10**,应该就不会报错了。
65 |
66 | ### (2) 运行程序
67 |
68 | 在项目目录进入控制台,输入`python main.py`回车即可。
69 |
70 | 如果你前面使用虚拟环境安装Python的包,注意一定要在虚拟环境里运行,否则会报错。
71 |
72 |
73 | ## 三、如果你想修改代码
74 |
75 | ### (1) 修改UI
76 |
77 | `./widget/`目录下所有的`.ui`文件都是程序UI的一部分。
78 |
79 | 按照前面的说明配置好环境后,在Python的`Scripts`目录下(这个目录就是你刚刚加入环境变量的两个目录之一),有一个文件叫`pyside6-designer.exe`。
80 |
81 | 运行这个程序,在里面打开`.ui`文件即可编辑,如下图
82 |
83 | 
84 |
85 | 右下角的黄色的区域就是用来调整UI的,上面的属性都是字面意思,可以自己修改试一试。
86 |
87 | 其中`styleSheet`这个属性比较重要,支持类似CSS的语法,可以很灵活的修改样式。我已经在mainwindow.ui里面写了一点styleSheet,可以参考
88 |
89 | ### (2) 编译
90 |
91 | 修改ui之后直接运行不会生效,必须先把`.ui`文件编译为`.py`文件。
92 |
93 | 在控制台运行`compile_ui.bat`脚本,如果输出如下图就编译成功。
94 |
95 | 
96 |
97 | 如果编译失败,自己用记事本打开脚本,按照里面的注释修改文件地址即可
98 |
99 | ### (3) 修改数据库配置
100 |
101 | 在前面配置MySQL的时候说了
102 |
103 | ### (4) 修改其他代码需要你会Qt的语法
104 |
--------------------------------------------------------------------------------
/bookdb.sql:
--------------------------------------------------------------------------------
1 | CREATE DATABASE bookdb;
2 | USE bookdb;
3 |
4 | # 这张表存放书籍信息
5 | CREATE TABLE book
6 | (
7 | `b_id` INT PRIMARY KEY AUTO_INCREMENT,
8 | `b_name` VARCHAR(255) UNIQUE NOT NULL,
9 | `author` VARCHAR(255) NOT NULL,
10 | `publish_date` DATE,
11 | `publish_name` VARCHAR(255),
12 | `borrowed` BOOL DEFAULT FALSE,
13 | `price` FLOAT,
14 | `intro` VARCHAR(255)
15 | );
16 |
17 | # 这张表存放四种读者的信息
18 | CREATE TABLE role
19 | (
20 | `r_id` INT PRIMARY KEY,
21 | `r_name` VARCHAR(255),
22 | `max_number` INT,
23 | `max_day` INT
24 | );
25 |
26 | INSERT INTO `role`
27 | VALUES (1, '教师', 15, 180);
28 | INSERT INTO `role`
29 | VALUES (2, '研究生', 10, 180);
30 | INSERT INTO `role`
31 | VALUES (3, '本科生', 5, 60);
32 | INSERT INTO `role`
33 | VALUES (4, '其他', 5, 30);
34 |
35 | # 这张表存放用户信息,注意外键关系
36 | CREATE TABLE user
37 | (
38 | `u_id` INT PRIMARY KEY AUTO_INCREMENT,
39 | `u_name` VARCHAR(255),
40 | `password` VARCHAR(255),
41 | `sex` VARCHAR(255),
42 | `balance` FLOAT,
43 | `phone_number` VARCHAR(255),
44 | `r_id` INT,
45 | `unit` VARCHAR(255),
46 | FOREIGN KEY (`r_id`) REFERENCES `role` (`r_id`)
47 | );
48 |
49 | # 这张表存放管理员信息
50 | CREATE TABLE administer
51 | (
52 | `a_id` INT PRIMARY KEY AUTO_INCREMENT,
53 | `a_name` VARCHAR(255),
54 | `password` VARCHAR(255)
55 | );
56 |
57 | # 这张表存放图书借阅的信息,注意外键关系
58 | CREATE TABLE borrow
59 | (
60 | `b_id` INT NOT NULL,
61 | `u_id` INT NOT NULL,
62 | FOREIGN KEY (`b_id`) REFERENCES `book` (`b_id`),
63 | FOREIGN KEY (`u_id`) REFERENCES `user` (`u_id`)
64 | );
65 |
66 | INSERT INTO `book`
67 | VALUES (1, '三体', '刘慈欣', '2008-01-15', '重庆出版社', 0, 59.62, '科幻名著三体');
68 | INSERT INTO `book`
69 | VALUES (2, '活着', '余华', '2012-08-01', '作家出版社', 0, 22.78, '经典名著活着');
70 | INSERT INTO `book`
71 | VALUES (3, 'C++ PRIMER PLUS', '史蒂芬·普拉达', '2015-07-01', '人民邮电出版社', 0, 120, 'C++学习必买书籍');
72 | INSERT INTO `book`
73 | VALUES (4, '人民日报', '人民日报社', '2021-12-01', '人民日报社', 0, 12.5, '官方报纸人民日报');
74 | INSERT INTO `book`
75 | VALUES (5, '资治通鉴', '司马光', '2010-08-01', '中华书局', 0, 150, '史学古籍资治通鉴');
76 | INSERT INTO `book`
77 | VALUES (6, '红楼梦', '曹雪芹', '1998-01-01', '中华书局', 0, 180, '经典巨著红楼梦');
78 |
79 | INSERT INTO `administer`
80 | VALUES (1, 'admin', 'admin');
81 |
82 | INSERT INTO `user`
83 | VALUES (1, '陈恒硕', 'sbchenhengshuo', '男', 0, '13604660566', 3, '吉林大学');
84 |
85 |
--------------------------------------------------------------------------------
/compile_ui.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 |
3 | rem 这个自动编译ui文件的程序是chatgpt生成的,写法比较奇怪,我自己也没看懂。但是能用
4 |
5 | setlocal enabledelayedexpansion
6 |
7 | rem 一定要把python的Scripts目录加入环境变量,否则无法识别pyside6-uic.exe!!!
8 |
9 | rem 如果没有加环境变量,也可以将下面的pyside6-uic.exe改为完整的目录,比如D:/Python/Python311/Scripts/pyside6-uic.exe
10 |
11 | set PYUIC6_COMMAND=pyside6-uic.exe
12 |
13 | set WIDGETS_FOLDER=./widget/
14 |
15 | echo Searching for .ui files in %WIDGETS_FOLDER%...
16 |
17 | for /r %WIDGETS_FOLDER% %%f in (*.ui) do (
18 | set OUTPUT_FILE=%%~nf.ui
19 | set OUTPUT_FILE=ui_!OUTPUT_FILE!
20 | set OUTPUT_FILE=!OUTPUT_FILE:.ui=.py!
21 |
22 | echo Converting %%~nxf to !OUTPUT_FILE!...
23 | call "%PYUIC6_COMMAND%" "%%f" -> "%WIDGETS_FOLDER%!OUTPUT_FILE!"
24 | )
25 |
26 | echo All .ui files have been converted to .py.
--------------------------------------------------------------------------------
/database/connector.py:
--------------------------------------------------------------------------------
1 | import pymysql
2 | from PySide6.QtWidgets import QMessageBox
3 | from lib.share import SI
4 |
5 |
6 | class Connector:
7 | __connection = None
8 | __cursor = None
9 |
10 | def __init__(self):
11 | self.__userName = 'root'
12 | self.__password = 'root'
13 | self.__databaseName = 'bookdb'
14 | self.__port = 3306
15 | try:
16 | Connector.__connection = pymysql.connect(host='localhost',
17 | user=self.__userName,
18 | password=self.__password,
19 | database=self.__databaseName,
20 | port=self.__port)
21 | Connector.__cursor = Connector.__connection.cursor()
22 | except:
23 | QMessageBox.critical(SI.g_mainWindow, '错误',
24 | '数据库链接错误,请检查用户名、密码、端口号和数据库名是否已正确设置')
25 |
26 | @staticmethod
27 | def get_cursor():
28 | if Connector.__connection is not None:
29 | Connector.__connection.commit()
30 | Connector.__cursor.close()
31 | Connector.__connection.close()
32 | Connector()
33 | return Connector.__cursor
34 |
35 | @staticmethod
36 | def get_connection():
37 | if Connector.__connection is not None:
38 | Connector.__connection.commit()
39 | Connector.__cursor.close()
40 | Connector.__connection.close()
41 | Connector()
42 | return Connector.__connection
43 |
44 | @staticmethod
45 | def close_connection():
46 | if Connector.__cursor is not None:
47 | Connector.__connection.close()
48 | Connector.__connection = None
49 | Connector.__cursor = None
50 |
51 |
--------------------------------------------------------------------------------
/lib/share.py:
--------------------------------------------------------------------------------
1 | class SI:
2 | g_mainWindow = None
3 | g_bookInfoModel = None
4 | g_userInfoModel = None
5 | g_userId = None
6 |
--------------------------------------------------------------------------------
/main.py:
--------------------------------------------------------------------------------
1 | from PySide6.QtWidgets import QApplication
2 | from widget.mainwindow import MainWindow
3 | from lib.share import SI
4 | from database.connector import Connector
5 |
6 | if __name__ == '__main__':
7 | app = QApplication([])
8 | widget = MainWindow(None)
9 | widget.show()
10 | app.exec()
11 | Connector.close_connection()
12 |
--------------------------------------------------------------------------------
/model/bookinfomodel.py:
--------------------------------------------------------------------------------
1 | from typing import Any
2 | from PySide6.QtCore import QAbstractTableModel, QModelIndex, QPersistentModelIndex
3 | from PySide6.QtCore import Qt
4 | from database.connector import Connector
5 | from lib.share import SI
6 |
7 |
8 | class BookInfoModel(QAbstractTableModel):
9 |
10 | s_instance = None
11 |
12 | @staticmethod
13 | def getInstance():
14 | if BookInfoModel.s_instance is None:
15 | BookInfoModel.s_instance = BookInfoModel()
16 | return BookInfoModel.s_instance
17 |
18 | def __init__(self, parent=None):
19 | super().__init__(parent)
20 | self.__bookInfoList = []
21 | self.__headerList = ['标题', '作者', '出版日期', '出版社', '是否已借出', '借阅/归还']
22 | SI.g_bookInfoModel = self
23 | self.update()
24 |
25 | def headerData(self, section: int, orientation: Qt.Orientation, role: int = ...) -> Any:
26 | if orientation == Qt.Horizontal and role == Qt.DisplayRole:
27 | if 0 <= section < len(self.__headerList):
28 | return self.__headerList[section]
29 | return super().headerData(section, orientation, role)
30 |
31 | def rowCount(self, parent: [QModelIndex, QPersistentModelIndex] = ...) -> int:
32 | return len(self.__bookInfoList)
33 |
34 | def columnCount(self, parent: [QModelIndex, QPersistentModelIndex] = ...) -> int:
35 | return len(self.__headerList)
36 |
37 | def data(self, index: [QModelIndex, QPersistentModelIndex], role: int = ...) -> Any:
38 | if not index.isValid():
39 | return None
40 | if role != Qt.ItemDataRole.DisplayRole:
41 | return None
42 | if 0 <= index.column() < len(self.__headerList) and 0 <= index.row() < len(self.__bookInfoList):
43 | return self.__bookInfoList[index.row()][index.column()]
44 | return None
45 |
46 | def sort(self, column: int, order: Qt.SortOrder = ...) -> None:
47 | self.__bookInfoList.sort(key=lambda row: row[column], reverse=order == Qt.SortOrder.DescendingOrder)
48 | self.dataChanged.emit(self.index(0, 0), self.index(len(self.__bookInfoList) - 1, len(self.__headerList) - 1))
49 |
50 | def update(self):
51 | self.beginResetModel()
52 | cursor = Connector.get_cursor()
53 | sql = 'SELECT b_name, author, publish_date, publish_name, borrowed, b_id FROM book'
54 | cursor.execute(sql)
55 | result = cursor.fetchall()
56 | self.__bookInfoList = []
57 | for row in result:
58 | self.__bookInfoList.append([row[0],
59 | row[1],
60 | row[2].strftime('%Y-%m-%d'),
61 | row[3],
62 | '否' if row[4] == 0 else '是',
63 | row[5]])
64 | self.endResetModel()
65 |
--------------------------------------------------------------------------------
/model/userinfomodel.py:
--------------------------------------------------------------------------------
1 | from typing import Any
2 | from PySide6.QtCore import QAbstractTableModel, QModelIndex, QPersistentModelIndex
3 | from PySide6.QtCore import Qt
4 |
5 | import lib.share
6 | from database.connector import Connector
7 | from lib.share import SI
8 |
9 |
10 | class UserInfoModel(QAbstractTableModel):
11 |
12 | def __init__(self, parent=None):
13 | super().__init__(parent)
14 | self.__userInfo = [[0, 0, 0, 0, 0, 0, 0]]
15 | self.__headerList = ['帐号', '余额', '类别', '已借阅数量', '最大借阅数量', '最大借阅时长', '查看已借阅书籍']
16 | lib.share.SI.g_userInfoModel = self
17 |
18 | def headerData(self, section: int, orientation: Qt.Orientation, role: int = ...) -> Any:
19 | if orientation == Qt.Horizontal and role == Qt.DisplayRole:
20 | if 0 <= section < len(self.__headerList):
21 | return self.__headerList[section]
22 | return super().headerData(section, orientation, role)
23 |
24 | def rowCount(self, parent: [QModelIndex, QPersistentModelIndex] = ...) -> int:
25 | return len(self.__userInfo)
26 |
27 | def columnCount(self, parent: [QModelIndex, QPersistentModelIndex] = ...) -> int:
28 | return len(self.__headerList)
29 |
30 | def data(self, index: [QModelIndex, QPersistentModelIndex], role: int = ...) -> Any:
31 | if not index.isValid():
32 | return None
33 | if role != Qt.ItemDataRole.DisplayRole:
34 | return None
35 | if 0 <= index.column() < len(self.__headerList) and 0 <= index.row() < len(self.__userInfo):
36 | return self.__userInfo[index.row()][index.column()]
37 | return None
38 |
39 | def update(self):
40 | cursor = Connector.get_cursor()
41 | sql = """
42 | SELECT u_name, balance, r_name, COUNT(b_id), max_number, max_day, u.u_id
43 | FROM user u
44 | JOIN role r on r.r_id = u.r_id
45 | LEFT JOIN borrow b on u.u_id = b.u_id
46 | WHERE u.u_id = %s;
47 | """
48 | cursor.execute(sql, (SI.g_userId))
49 | self.__userInfo = list(cursor.fetchall())
50 | self.dataChanged.emit(self.index(0, 0), self.index(len(self.__userInfo) - 1, len(self.__headerList) - 1))
--------------------------------------------------------------------------------
/readme_src/修改UI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hwdqm88/SDU_sql_experiment_bookdb/2eff4a5b5bc26ea630ff5d8f1781ab161951d218/readme_src/修改UI.png
--------------------------------------------------------------------------------
/readme_src/编译.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hwdqm88/SDU_sql_experiment_bookdb/2eff4a5b5bc26ea630ff5d8f1781ab161951d218/readme_src/编译.png
--------------------------------------------------------------------------------
/readme_src/配置python.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hwdqm88/SDU_sql_experiment_bookdb/2eff4a5b5bc26ea630ff5d8f1781ab161951d218/readme_src/配置python.png
--------------------------------------------------------------------------------
/readme_src/配置python2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hwdqm88/SDU_sql_experiment_bookdb/2eff4a5b5bc26ea630ff5d8f1781ab161951d218/readme_src/配置python2.png
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | pyside6==6.5.1.1
2 | pymysql==1.1.0
--------------------------------------------------------------------------------
/view/bookinfoviewforadmin.py:
--------------------------------------------------------------------------------
1 | from PySide6.QtWidgets import QTableView, QPushButton, QMessageBox, QHeaderView
2 |
3 | from lib.share import SI
4 | from database.connector import Connector
5 | from model.bookinfomodel import BookInfoModel
6 |
7 |
8 | class BookInfoViewForAdmin(QTableView):
9 |
10 | def __init__(self, parent=None):
11 | super().__init__(parent)
12 | self.verticalHeader().setVisible(False)
13 | self.__model = BookInfoModel.getInstance()
14 | self.setModel(self.__model)
15 | self.__model.update()
16 | self.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeMode.ResizeToContents)
17 | # self.setSortingEnabled(True)
18 | for i in range(self.__model.rowCount()):
19 | borrow_button = QPushButton('删除')
20 | borrow_button.setStyleSheet('background-color: red')
21 | borrow_button.setWhatsThis(str(i))
22 | borrow_button.clicked.connect(self.deleteBook)
23 | self.setIndexWidget(self.__model.index(i, self.__model.columnCount() - 1), borrow_button)
24 |
25 | def deleteBook(self):
26 | ret = QMessageBox.question(self, '确认删除', '确认删除这本书吗?')
27 | if ret != QMessageBox.StandardButton.Yes:
28 | return
29 | row_index = int(self.sender().whatsThis())
30 | b_id = self.__model.index(row_index, 5).data()
31 | sql = 'DELETE FROM borrow WHERE b_id = %s'
32 | cursor = Connector.get_cursor()
33 | cursor.execute(sql, b_id)
34 | sql = 'DELETE FROM book WHERE b_id = %s'
35 | cursor.execute(sql, b_id)
36 | Connector.get_connection()
37 | QMessageBox.information(self, '删除成功', '删除成功')
38 | self.updateData()
39 |
40 | def updateData(self):
41 | self.__model.update()
42 | for i in range(self.__model.rowCount()):
43 | borrow_button = QPushButton('删除')
44 | borrow_button.setStyleSheet('background-color: red')
45 | borrow_button.setWhatsThis(str(i))
46 | borrow_button.clicked.connect(self.deleteBook)
47 | self.setIndexWidget(self.__model.index(i, self.__model.columnCount() - 1), borrow_button)
48 |
--------------------------------------------------------------------------------
/view/bookinfoviewforreader.py:
--------------------------------------------------------------------------------
1 | from PySide6.QtWidgets import QTableView, QPushButton, QMessageBox, QHeaderView
2 |
3 | from lib.share import SI
4 | from database.connector import Connector
5 | from model.bookinfomodel import BookInfoModel
6 |
7 |
8 | class BookInfoViewForReader(QTableView):
9 |
10 | def __init__(self, parent=None):
11 | super().__init__(parent)
12 | self.verticalHeader().setVisible(False)
13 | self.__model = BookInfoModel.getInstance()
14 | self.setModel(self.__model)
15 | self.__model.update()
16 | self.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeMode.ResizeToContents)
17 | # self.setSortingEnabled(True)
18 | for i in range(self.__model.rowCount()):
19 | borrow_button = QPushButton('借阅/归还')
20 | borrow_button.setWhatsThis(str(i))
21 | borrow_button.clicked.connect(self.borrow)
22 | self.setIndexWidget(self.__model.index(i, self.__model.columnCount() - 1), borrow_button)
23 |
24 | def borrow(self):
25 | row_index = int(self.sender().whatsThis())
26 | b_id = self.__model.index(row_index, 5).data()
27 | cursor = Connector.get_cursor()
28 | if self.__model.index(row_index, 4).data() == '否':
29 | if int(SI.g_userInfoModel.index(0, 3).data()) >= int(SI.g_userInfoModel.index(0, 4).data()):
30 | QMessageBox.information(self, '借阅失败', '已达到最大借阅数量')
31 | return
32 | sql = 'UPDATE book SET borrowed = 1 WHERE b_id = %s;'
33 | cursor.execute(sql, b_id)
34 | Connector.get_connection()
35 | sql = 'INSERT INTO borrow VALUES (%s, %s);'
36 | cursor = Connector.get_cursor()
37 | cursor.execute(sql, (b_id, SI.g_userId))
38 | Connector.get_connection()
39 | QMessageBox.information(self, '借阅成功', '借阅成功')
40 | else:
41 | sql = 'SELECT * FROM borrow WHERE u_id = %s AND b_id = %s;'
42 | cursor.execute(sql, (SI.g_userId, b_id))
43 | if cursor.fetchone() is None:
44 | QMessageBox.information(self, '归还失败', '这本书是别人借阅的')
45 | return
46 | sql = 'UPDATE `book` SET borrowed = 0 WHERE b_id = %s;'
47 | cursor.execute(sql, b_id)
48 | Connector.get_connection()
49 | cursor = Connector.get_cursor()
50 | sql = 'DELETE FROM `borrow` WHERE b_id = %s AND u_id = %s;'
51 | cursor.execute(sql, (b_id, SI.g_userId))
52 | Connector.get_connection()
53 | QMessageBox.information(self, '归还成功', '归还成功')
54 | self.updateData()
55 | SI.g_userInfoModel.update()
56 |
57 | def updateData(self):
58 | self.__model.update()
59 | for i in range(self.__model.rowCount()):
60 | borrow_button = QPushButton('借阅/归还')
61 | borrow_button.setWhatsThis(str(i))
62 | borrow_button.clicked.connect(self.borrow)
63 | self.setIndexWidget(self.__model.index(i, self.__model.columnCount() - 1), borrow_button)
64 |
--------------------------------------------------------------------------------
/view/userinfoview.py:
--------------------------------------------------------------------------------
1 | from PySide6.QtWidgets import QTableView, QPushButton, QListWidget, QHeaderView
2 | from database.connector import Connector
3 | from model.userinfomodel import UserInfoModel
4 | from lib.share import SI
5 |
6 |
7 | class UserInfoView(QTableView):
8 |
9 | def __init__(self, parent=None):
10 | super().__init__(parent)
11 | self.__showBorrowWidget = None
12 | self.verticalHeader().setVisible(False)
13 | self.__model = UserInfoModel()
14 | self.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeMode.ResizeToContents)
15 | self.setModel(self.__model)
16 | show_button = QPushButton('查看已借阅书籍')
17 | self.setIndexWidget(self.__model.index(0, 6), show_button)
18 | show_button.setStyleSheet('min-width: 100px; max-width: 100px;')
19 | show_button.clicked.connect(self.showBorrow)
20 |
21 | def showBorrow(self):
22 | cursor = Connector.get_cursor()
23 | sql = """
24 | SELECT b_name
25 | FROM borrow
26 | JOIN book on book.b_id = borrow.b_id
27 | JOIN user on user.u_id = borrow.u_id
28 | WHERE borrow.u_id = %s
29 | """
30 | cursor.execute(sql, SI.g_userId)
31 | result = cursor.fetchall()
32 | self.__showBorrowWidget = QListWidget()
33 | self.__showBorrowWidget.setWindowTitle('借阅书籍目录')
34 | for item in result:
35 | self.__showBorrowWidget.addItem(item[0])
36 | self.__showBorrowWidget.show()
37 |
38 | def updateData(self):
39 | self.__model.update()
40 |
--------------------------------------------------------------------------------
/widget/addbookwidget.py:
--------------------------------------------------------------------------------
1 | from PySide6.QtWidgets import QWidget, QMessageBox
2 | from lib.share import SI
3 | from widget.ui_addbookwidget import Ui_AddBookWidget
4 | from database.connector import Connector
5 |
6 |
7 | class AddBookWidget(QWidget):
8 | def __init__(self, parent=None):
9 | super().__init__(parent)
10 | self.__ui = Ui_AddBookWidget()
11 | self.__ui.setupUi(self)
12 | self.__ui.m_returnButton.clicked.connect(lambda: SI.g_mainWindow.setCurrentIndex(5))
13 | self.__ui.m_addButton.clicked.connect(self.addBook)
14 |
15 | def addBook(self):
16 | name = self.__ui.m_titleLineEdit.text()
17 | author = self.__ui.m_authorLineEdit.text()
18 | publish_date = self.__ui.m_publishDateEdit.date()
19 | publish_name = self.__ui.m_publishLineEdit.text()
20 | price = self.__ui.m_priceSpinBox.text()
21 | intro = self.__ui.m_introLineEdit.text()
22 | publish_date = '{}-{}-{}'.format(publish_date.year(), publish_date.month(), publish_date.day())
23 | if name == '' or author == '' or publish_name == '' or intro == '':
24 | QMessageBox.information(self, '添加失败', '请填完全部信息再添加书籍')
25 | return
26 | cursor = Connector.get_cursor()
27 | sql = """
28 | INSERT INTO book (b_name, author, publish_date, publish_name, price, intro)
29 | VALUES (%s, %s, %s, %s, %s, %s);
30 | """
31 | cursor.execute(sql, (name, author, publish_date, publish_name, price, intro))
32 | Connector.get_connection()
33 | QMessageBox.information(self, '添加成功', '添加书籍成功')
34 | SI.g_mainWindow.updateAdminWidget()
--------------------------------------------------------------------------------
/widget/addbookwidget.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | AddBookWidget
4 |
5 |
6 |
7 | 0
8 | 0
9 | 675
10 | 389
11 |
12 |
13 |
14 | 添加新书
15 |
16 |
17 | -
18 |
19 |
20 | Qt::Vertical
21 |
22 |
23 |
24 | 20
25 | 40
26 |
27 |
28 |
29 |
30 | -
31 |
32 |
-
33 |
34 |
35 | Qt::Horizontal
36 |
37 |
38 | QSizePolicy::Fixed
39 |
40 |
41 |
42 | 200
43 | 20
44 |
45 |
46 |
47 |
48 | -
49 |
50 |
51 | 标题:
52 |
53 |
54 |
55 | -
56 |
57 |
58 | Qt::Horizontal
59 |
60 |
61 |
62 | 40
63 | 20
64 |
65 |
66 |
67 |
68 | -
69 |
70 |
71 | -
72 |
73 |
74 | Qt::Horizontal
75 |
76 |
77 | QSizePolicy::Fixed
78 |
79 |
80 |
81 | 200
82 | 20
83 |
84 |
85 |
86 |
87 |
88 |
89 | -
90 |
91 |
92 | Qt::Vertical
93 |
94 |
95 |
96 | 20
97 | 40
98 |
99 |
100 |
101 |
102 | -
103 |
104 |
-
105 |
106 |
107 | Qt::Horizontal
108 |
109 |
110 | QSizePolicy::Fixed
111 |
112 |
113 |
114 | 200
115 | 20
116 |
117 |
118 |
119 |
120 | -
121 |
122 |
123 | 作者:
124 |
125 |
126 |
127 | -
128 |
129 |
130 | Qt::Horizontal
131 |
132 |
133 |
134 | 40
135 | 20
136 |
137 |
138 |
139 |
140 | -
141 |
142 |
143 | -
144 |
145 |
146 | Qt::Horizontal
147 |
148 |
149 | QSizePolicy::Fixed
150 |
151 |
152 |
153 | 200
154 | 20
155 |
156 |
157 |
158 |
159 |
160 |
161 | -
162 |
163 |
164 | Qt::Vertical
165 |
166 |
167 |
168 | 20
169 | 40
170 |
171 |
172 |
173 |
174 | -
175 |
176 |
-
177 |
178 |
179 | Qt::Horizontal
180 |
181 |
182 | QSizePolicy::Fixed
183 |
184 |
185 |
186 | 200
187 | 20
188 |
189 |
190 |
191 |
192 | -
193 |
194 |
195 | 出版日期:
196 |
197 |
198 |
199 | -
200 |
201 |
202 | Qt::Horizontal
203 |
204 |
205 |
206 | 40
207 | 20
208 |
209 |
210 |
211 |
212 | -
213 |
214 |
215 |
216 | 0
217 | 0
218 |
219 |
220 |
221 |
222 | -
223 |
224 |
225 | Qt::Horizontal
226 |
227 |
228 | QSizePolicy::Fixed
229 |
230 |
231 |
232 | 200
233 | 20
234 |
235 |
236 |
237 |
238 |
239 |
240 | -
241 |
242 |
243 | Qt::Vertical
244 |
245 |
246 |
247 | 20
248 | 40
249 |
250 |
251 |
252 |
253 | -
254 |
255 |
-
256 |
257 |
258 | Qt::Horizontal
259 |
260 |
261 | QSizePolicy::Fixed
262 |
263 |
264 |
265 | 200
266 | 20
267 |
268 |
269 |
270 |
271 | -
272 |
273 |
274 | 出版社:
275 |
276 |
277 |
278 | -
279 |
280 |
281 | Qt::Horizontal
282 |
283 |
284 |
285 | 40
286 | 20
287 |
288 |
289 |
290 |
291 | -
292 |
293 |
294 | -
295 |
296 |
297 | Qt::Horizontal
298 |
299 |
300 | QSizePolicy::Fixed
301 |
302 |
303 |
304 | 200
305 | 20
306 |
307 |
308 |
309 |
310 |
311 |
312 | -
313 |
314 |
315 | Qt::Vertical
316 |
317 |
318 |
319 | 20
320 | 40
321 |
322 |
323 |
324 |
325 | -
326 |
327 |
-
328 |
329 |
330 | Qt::Horizontal
331 |
332 |
333 | QSizePolicy::Fixed
334 |
335 |
336 |
337 | 200
338 | 20
339 |
340 |
341 |
342 |
343 | -
344 |
345 |
346 | 价格:
347 |
348 |
349 |
350 | -
351 |
352 |
353 | Qt::Horizontal
354 |
355 |
356 |
357 | 40
358 | 20
359 |
360 |
361 |
362 |
363 | -
364 |
365 |
366 |
367 | 0
368 | 0
369 |
370 |
371 |
372 |
373 | -
374 |
375 |
376 | Qt::Horizontal
377 |
378 |
379 | QSizePolicy::Fixed
380 |
381 |
382 |
383 | 200
384 | 20
385 |
386 |
387 |
388 |
389 |
390 |
391 | -
392 |
393 |
394 | Qt::Vertical
395 |
396 |
397 |
398 | 20
399 | 40
400 |
401 |
402 |
403 |
404 | -
405 |
406 |
-
407 |
408 |
409 | Qt::Horizontal
410 |
411 |
412 | QSizePolicy::Fixed
413 |
414 |
415 |
416 | 200
417 | 20
418 |
419 |
420 |
421 |
422 | -
423 |
424 |
425 | 简介:
426 |
427 |
428 |
429 | -
430 |
431 |
432 | Qt::Horizontal
433 |
434 |
435 |
436 | 40
437 | 20
438 |
439 |
440 |
441 |
442 | -
443 |
444 |
445 | -
446 |
447 |
448 | Qt::Horizontal
449 |
450 |
451 | QSizePolicy::Fixed
452 |
453 |
454 |
455 | 200
456 | 20
457 |
458 |
459 |
460 |
461 |
462 |
463 | -
464 |
465 |
466 | Qt::Vertical
467 |
468 |
469 |
470 | 20
471 | 40
472 |
473 |
474 |
475 |
476 | -
477 |
478 |
-
479 |
480 |
481 | Qt::Horizontal
482 |
483 |
484 | QSizePolicy::Fixed
485 |
486 |
487 |
488 | 200
489 | 20
490 |
491 |
492 |
493 |
494 | -
495 |
496 |
497 | 确认添加
498 |
499 |
500 |
501 | -
502 |
503 |
504 | Qt::Horizontal
505 |
506 |
507 |
508 | 40
509 | 20
510 |
511 |
512 |
513 |
514 | -
515 |
516 |
517 | 返回
518 |
519 |
520 |
521 | -
522 |
523 |
524 | Qt::Horizontal
525 |
526 |
527 | QSizePolicy::Fixed
528 |
529 |
530 |
531 | 200
532 | 20
533 |
534 |
535 |
536 |
537 |
538 |
539 | -
540 |
541 |
542 | Qt::Vertical
543 |
544 |
545 |
546 | 20
547 | 40
548 |
549 |
550 |
551 |
552 |
553 |
554 |
555 |
556 |
557 |
--------------------------------------------------------------------------------
/widget/administerloginwidget.py:
--------------------------------------------------------------------------------
1 | from PySide6.QtWidgets import QWidget, QMessageBox
2 | from widget.ui_administerloginwidget import Ui_AdministerLoginWidget
3 | from lib.share import SI
4 | from database.connector import Connector
5 |
6 |
7 | class AdministerLoginWidget(QWidget):
8 |
9 | def __init__(self, parent=None):
10 | super().__init__(parent)
11 | self.__ui = Ui_AdministerLoginWidget()
12 | self.__ui.setupUi(self)
13 | self.__ui.m_returnButton.clicked.connect(lambda:
14 | SI.g_mainWindow.setCurrentIndex(0))
15 | self.__ui.m_loginButton.clicked.connect(self.login)
16 |
17 | def login(self):
18 | cursor = Connector.get_cursor()
19 | sql = 'SELECT * FROM administer WHERE a_name = %s AND password = %s;'
20 | cursor.execute(sql, (self.__ui.m_accountLineEdit.text(), self.__ui.m_passwordLineEdit.text()))
21 | if cursor.fetchone is None:
22 | QMessageBox.critical(self, '登陆失败', '管理员帐号或密码错误,请检查')
23 | return
24 | SI.g_mainWindow.setCurrentIndex(5)
--------------------------------------------------------------------------------
/widget/administerloginwidget.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | AdministerLoginWidget
4 |
5 |
6 |
7 | 0
8 | 0
9 | 796
10 | 568
11 |
12 |
13 |
14 | Form
15 |
16 |
17 | -
18 |
19 |
20 | Qt::Vertical
21 |
22 |
23 |
24 | 20
25 | 40
26 |
27 |
28 |
29 |
30 | -
31 |
32 |
33 |
34 | 黑体
35 | 16
36 |
37 |
38 |
39 | 管理员登录
40 |
41 |
42 | Qt::AlignCenter
43 |
44 |
45 |
46 | -
47 |
48 |
49 | Qt::Vertical
50 |
51 |
52 |
53 | 20
54 | 40
55 |
56 |
57 |
58 |
59 | -
60 |
61 |
-
62 |
63 |
64 | Qt::Horizontal
65 |
66 |
67 |
68 | 40
69 | 20
70 |
71 |
72 |
73 |
74 | -
75 |
76 |
77 | 帐号:
78 |
79 |
80 |
81 | -
82 |
83 |
84 |
85 |
86 |
87 |
88 | -
89 |
90 |
91 | Qt::Horizontal
92 |
93 |
94 |
95 | 40
96 | 20
97 |
98 |
99 |
100 |
101 |
102 |
103 | -
104 |
105 |
106 | Qt::Vertical
107 |
108 |
109 |
110 | 20
111 | 40
112 |
113 |
114 |
115 |
116 | -
117 |
118 |
-
119 |
120 |
121 | Qt::Horizontal
122 |
123 |
124 |
125 | 40
126 | 20
127 |
128 |
129 |
130 |
131 | -
132 |
133 |
134 | 密码:
135 |
136 |
137 |
138 | -
139 |
140 |
141 |
142 |
143 |
144 | QLineEdit::Password
145 |
146 |
147 |
148 | -
149 |
150 |
151 | Qt::Horizontal
152 |
153 |
154 |
155 | 40
156 | 20
157 |
158 |
159 |
160 |
161 |
162 |
163 | -
164 |
165 |
166 | Qt::Vertical
167 |
168 |
169 |
170 | 20
171 | 40
172 |
173 |
174 |
175 |
176 | -
177 |
178 |
-
179 |
180 |
181 | Qt::Horizontal
182 |
183 |
184 |
185 | 40
186 | 20
187 |
188 |
189 |
190 |
191 | -
192 |
193 |
194 | 登录
195 |
196 |
197 |
198 | -
199 |
200 |
201 | Qt::Horizontal
202 |
203 |
204 | QSizePolicy::Fixed
205 |
206 |
207 |
208 | 40
209 | 20
210 |
211 |
212 |
213 |
214 | -
215 |
216 |
217 | 返回
218 |
219 |
220 |
221 | -
222 |
223 |
224 | Qt::Horizontal
225 |
226 |
227 |
228 | 40
229 | 20
230 |
231 |
232 |
233 |
234 |
235 |
236 | -
237 |
238 |
239 | Qt::Vertical
240 |
241 |
242 |
243 | 20
244 | 40
245 |
246 |
247 |
248 |
249 |
250 |
251 |
252 |
253 |
254 |
--------------------------------------------------------------------------------
/widget/adminwidget.py:
--------------------------------------------------------------------------------
1 | from PySide6.QtWidgets import QWidget
2 | from lib.share import SI
3 | from widget.ui_adminwidget import Ui_AdminWidget
4 |
5 |
6 | class AdminWidget(QWidget):
7 | def __init__(self, parent=None):
8 | super().__init__(parent)
9 | self.__ui = Ui_AdminWidget()
10 | self.__ui.setupUi(self)
11 | self.__ui.m_addBookButton.clicked.connect(self.addBook)
12 | self.__ui.m_logoutButton.clicked.connect(lambda: SI.g_mainWindow.setCurrentIndex(0))
13 |
14 | def addBook(self):
15 | SI.g_mainWindow.setCurrentIndex(6)
16 |
17 | def updateData(self):
18 | self.__ui.m_bookInfoView.updateData()
19 |
--------------------------------------------------------------------------------
/widget/adminwidget.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | AdminWidget
4 |
5 |
6 |
7 | 0
8 | 0
9 | 631
10 | 464
11 |
12 |
13 |
14 | Form
15 |
16 |
17 | -
18 |
19 |
-
20 |
21 |
22 | Qt::Horizontal
23 |
24 |
25 |
26 | 40
27 | 20
28 |
29 |
30 |
31 |
32 | -
33 |
34 |
35 | 添加书籍
36 |
37 |
38 |
39 | -
40 |
41 |
42 | background-color: red
43 |
44 |
45 | 退出登录
46 |
47 |
48 |
49 |
50 |
51 | -
52 |
53 |
54 |
55 |
56 |
57 |
58 | BookInfoViewForAdmin
59 | QTableView
60 | view/bookinfoviewforadmin.h
61 |
62 |
63 |
64 |
65 |
66 |
--------------------------------------------------------------------------------
/widget/borrowwidget.py:
--------------------------------------------------------------------------------
1 | from PySide6.QtWidgets import QWidget
2 | from lib.share import SI
3 | from widget.ui_borrowwidget import Ui_BorrowWidget
4 |
5 |
6 | class BorrowWidget(QWidget):
7 | def __init__(self, parent=None):
8 | super().__init__(parent)
9 | self.__ui = Ui_BorrowWidget()
10 | self.__ui.setupUi(self)
11 | self.__ui.m_logoutButton.clicked.connect(lambda: SI.g_mainWindow.setCurrentIndex(0))
12 |
13 | def updateData(self):
14 | self.__ui.m_bookInfoView.updateData()
15 | self.__ui.m_userInfoView.updateData()
16 |
--------------------------------------------------------------------------------
/widget/borrowwidget.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | BorrowWidget
4 |
5 |
6 |
7 | 0
8 | 0
9 | 631
10 | 464
11 |
12 |
13 |
14 | Form
15 |
16 |
17 | -
18 |
19 |
20 |
21 | 0
22 | 0
23 |
24 |
25 |
26 |
27 | 0
28 | 100
29 |
30 |
31 |
32 |
33 | 16777215
34 | 100
35 |
36 |
37 |
38 |
39 | -
40 |
41 |
-
42 |
43 |
44 | Qt::Horizontal
45 |
46 |
47 |
48 | 40
49 | 20
50 |
51 |
52 |
53 |
54 | -
55 |
56 |
57 | background-color: red; color: white;
58 |
59 |
60 | 退出登录
61 |
62 |
63 |
64 |
65 |
66 | -
67 |
68 |
69 |
70 |
71 |
72 |
73 | UserInfoView
74 | QTableView
75 |
76 |
77 |
78 | BookInfoViewForReader
79 | QTableView
80 | view/bookinfoviewforreader.h
81 |
82 |
83 |
84 |
85 |
86 |
--------------------------------------------------------------------------------
/widget/mainwindow.py:
--------------------------------------------------------------------------------
1 | from PySide6.QtWidgets import QStackedWidget
2 | from lib.share import SI
3 | from widget.ui_mainwindow import Ui_MainWindow
4 |
5 |
6 | class MainWindow(QStackedWidget):
7 | def __init__(self, parent=None):
8 | super().__init__(parent)
9 | self.__ui = Ui_MainWindow()
10 | self.__ui.setupUi(self)
11 | SI.g_mainWindow = self
12 | self.__ui.m_readerLoginButton.clicked.connect(lambda:
13 | self.setCurrentWidget(self.__ui.m_readerLoginWidget))
14 | self.__ui.m_administerLoginButton.clicked.connect(lambda:
15 | self.setCurrentWidget(self.__ui.m_administerLoginWidget))
16 |
17 | def updateBorrowWidget(self):
18 | self.__ui.m_borrowWidget.updateData()
19 |
20 | def updateAdminWidget(self):
21 | self.__ui.m_adminWidget.updateData()
22 |
--------------------------------------------------------------------------------
/widget/mainwindow.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | MainWindow
4 |
5 |
6 |
7 | 0
8 | 0
9 | 708
10 | 451
11 |
12 |
13 |
14 | 图书管理系统
15 |
16 |
17 | QPushButton {
18 | border-radius: 5px;
19 | background-color: rgb(64, 158, 255);
20 | color: white;
21 | min-height: 25px;
22 | max-height: 25px;
23 | min-width: 70px;
24 | max-width: 70px;
25 | }
26 | QPushButton:hover {
27 | background-color: rgb(102, 177, 255);
28 | }
29 |
30 | #m_welcomeWidget {
31 | background-color: white;
32 | }
33 |
34 |
35 |
36 | -
37 |
38 |
39 | Qt::Vertical
40 |
41 |
42 |
43 | 20
44 | 40
45 |
46 |
47 |
48 |
49 | -
50 |
51 |
52 |
53 | 黑体
54 | 16
55 |
56 |
57 |
58 | 欢迎使用图书管理系统
59 |
60 |
61 | Qt::AlignCenter
62 |
63 |
64 |
65 | -
66 |
67 |
68 | Qt::Vertical
69 |
70 |
71 |
72 | 20
73 | 40
74 |
75 |
76 |
77 |
78 | -
79 |
80 |
-
81 |
82 |
83 | Qt::Horizontal
84 |
85 |
86 |
87 | 40
88 | 20
89 |
90 |
91 |
92 |
93 | -
94 |
95 |
96 | 读者登录
97 |
98 |
99 |
100 | -
101 |
102 |
103 | Qt::Horizontal
104 |
105 |
106 |
107 | 40
108 | 20
109 |
110 |
111 |
112 |
113 | -
114 |
115 |
116 | 管理员登录
117 |
118 |
119 |
120 | -
121 |
122 |
123 | Qt::Horizontal
124 |
125 |
126 |
127 | 40
128 | 20
129 |
130 |
131 |
132 |
133 |
134 |
135 | -
136 |
137 |
138 | Qt::Vertical
139 |
140 |
141 |
142 | 20
143 | 40
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 | ReaderLoginWidget
160 | QWidget
161 | widget/readerloginwidget.h
162 | 1
163 |
164 |
165 | AdministerLoginWidget
166 | QWidget
167 | widget/administerloginwidget.h
168 | 1
169 |
170 |
171 | BorrowWidget
172 | QWidget
173 |
174 | 1
175 |
176 |
177 | RegisterWidget
178 | QWidget
179 |
180 | 1
181 |
182 |
183 | AdminWidget
184 | QWidget
185 |
186 | 1
187 |
188 |
189 | AddBookWidget
190 | QWidget
191 |
192 | 1
193 |
194 |
195 |
196 |
197 |
198 |
--------------------------------------------------------------------------------
/widget/readerloginwidget.py:
--------------------------------------------------------------------------------
1 | from PySide6.QtWidgets import QWidget, QMessageBox
2 | from widget.ui_readerloginwidget import Ui_ReaderLoginWidget
3 | from lib.share import SI
4 | from database.connector import Connector
5 |
6 |
7 | class ReaderLoginWidget(QWidget):
8 | def __init__(self, parent=None):
9 | super().__init__(parent)
10 | self.__ui = Ui_ReaderLoginWidget()
11 | self.__ui.setupUi(self)
12 | self.__ui.m_returnButton.clicked.connect(lambda:
13 | SI.g_mainWindow.setCurrentIndex(0))
14 | self.__ui.m_loginButton.clicked.connect(self.login)
15 | self.__ui.m_registerButton.clicked.connect(self.register)
16 |
17 | def login(self):
18 | cursor = Connector.get_cursor()
19 | sql = 'SELECT u_id FROM user WHERE u_name = %s AND password = %s'
20 | cursor.execute(sql, (self.__ui.m_accountLineEdit.text(), self.__ui.m_passwordLineEdit.text()))
21 | result = cursor.fetchone()
22 | if result is None:
23 | QMessageBox.critical(self, '登陆失败', '用户名或密码错误,请重试')
24 | return
25 | SI.g_userId = result[0]
26 | SI.g_mainWindow.setCurrentIndex(3)
27 | SI.g_mainWindow.updateBorrowWidget()
28 |
29 | def register(self):
30 | SI.g_mainWindow.setCurrentIndex(4)
31 |
--------------------------------------------------------------------------------
/widget/readerloginwidget.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | ReaderLoginWidget
4 |
5 |
6 |
7 | 0
8 | 0
9 | 591
10 | 456
11 |
12 |
13 |
14 | Form
15 |
16 |
17 | -
18 |
19 |
20 | Qt::Vertical
21 |
22 |
23 |
24 | 20
25 | 40
26 |
27 |
28 |
29 |
30 | -
31 |
32 |
33 |
34 | 黑体
35 | 16
36 |
37 |
38 |
39 | 读者登录
40 |
41 |
42 | Qt::AlignCenter
43 |
44 |
45 |
46 | -
47 |
48 |
49 | Qt::Vertical
50 |
51 |
52 |
53 | 20
54 | 40
55 |
56 |
57 |
58 |
59 | -
60 |
61 |
-
62 |
63 |
64 | Qt::Horizontal
65 |
66 |
67 |
68 | 40
69 | 20
70 |
71 |
72 |
73 |
74 | -
75 |
76 |
77 | 姓名:
78 |
79 |
80 |
81 | -
82 |
83 |
84 |
85 |
86 |
87 |
88 | -
89 |
90 |
91 | Qt::Horizontal
92 |
93 |
94 |
95 | 40
96 | 20
97 |
98 |
99 |
100 |
101 |
102 |
103 | -
104 |
105 |
106 | Qt::Vertical
107 |
108 |
109 |
110 | 20
111 | 40
112 |
113 |
114 |
115 |
116 | -
117 |
118 |
-
119 |
120 |
121 | Qt::Horizontal
122 |
123 |
124 |
125 | 40
126 | 20
127 |
128 |
129 |
130 |
131 | -
132 |
133 |
134 | 密码:
135 |
136 |
137 |
138 | -
139 |
140 |
141 |
142 |
143 |
144 | QLineEdit::Password
145 |
146 |
147 |
148 | -
149 |
150 |
151 | Qt::Horizontal
152 |
153 |
154 |
155 | 40
156 | 20
157 |
158 |
159 |
160 |
161 |
162 |
163 | -
164 |
165 |
166 | Qt::Vertical
167 |
168 |
169 |
170 | 20
171 | 40
172 |
173 |
174 |
175 |
176 | -
177 |
178 |
-
179 |
180 |
181 | Qt::Horizontal
182 |
183 |
184 |
185 | 40
186 | 20
187 |
188 |
189 |
190 |
191 | -
192 |
193 |
194 | 登录
195 |
196 |
197 |
198 | -
199 |
200 |
201 | Qt::Horizontal
202 |
203 |
204 | QSizePolicy::Fixed
205 |
206 |
207 |
208 | 40
209 | 20
210 |
211 |
212 |
213 |
214 | -
215 |
216 |
217 | 注册
218 |
219 |
220 |
221 | -
222 |
223 |
224 | Qt::Horizontal
225 |
226 |
227 | QSizePolicy::Fixed
228 |
229 |
230 |
231 | 40
232 | 20
233 |
234 |
235 |
236 |
237 | -
238 |
239 |
240 | 返回
241 |
242 |
243 |
244 | -
245 |
246 |
247 | Qt::Horizontal
248 |
249 |
250 |
251 | 40
252 | 20
253 |
254 |
255 |
256 |
257 |
258 |
259 | -
260 |
261 |
262 | Qt::Vertical
263 |
264 |
265 |
266 | 20
267 | 40
268 |
269 |
270 |
271 |
272 |
273 |
274 |
275 |
276 |
277 |
--------------------------------------------------------------------------------
/widget/registerwidget.py:
--------------------------------------------------------------------------------
1 | from PySide6.QtWidgets import QWidget, QMessageBox
2 |
3 | from lib.share import SI
4 | from widget.ui_registerwidget import Ui_RegisterWidget
5 | from database.connector import Connector
6 |
7 |
8 | class RegisterWidget(QWidget):
9 | def __init__(self, parent=None):
10 | super().__init__(parent)
11 | self.__ui = Ui_RegisterWidget()
12 | self.__ui.setupUi(self)
13 | self.__ui.m_returnButton.clicked.connect(lambda: SI.g_mainWindow.setCurrentIndex(1))
14 | self.__ui.m_registerButton.clicked.connect(self.register)
15 |
16 | def register(self):
17 | name = self.__ui.m_nameLlineEdit.text()
18 | password = self.__ui.m_passwordLineEdit.text()
19 | password_confirm = self.__ui.m_passwordConfirmLineEdit.text()
20 | gender = self.__ui.m_genderComboBox.currentText()
21 | balance = 0
22 | mobile = self.__ui.m_mobileLineEdit.text()
23 | unit = self.__ui.m_unitLineEdit.text()
24 | role = self.__ui.m_roleComboBox.currentIndex()
25 | if name == '' or password == '' or mobile == '' or unit == '':
26 | QMessageBox.information(self, '注册失败', '请将信息填写完整再注册')
27 | return
28 | if password != password_confirm:
29 | QMessageBox.information(self, '注册失败', '密码和确认密码输入不一致')
30 | return
31 | cursor = Connector.get_cursor()
32 | sql = """
33 | INSERT INTO user (u_name, password, sex, balance, phone_number, r_id, unit)
34 | VALUES (%s, %s, %s, %s, %s, %s, %s);
35 | """
36 | cursor.execute(sql, (name, password, gender, balance, mobile, role, unit))
37 | Connector.get_connection()
38 | QMessageBox.information(self, '注册成功', '注册成功')
39 |
--------------------------------------------------------------------------------
/widget/registerwidget.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | RegisterWidget
4 |
5 |
6 |
7 | 0
8 | 0
9 | 708
10 | 429
11 |
12 |
13 |
14 | Form
15 |
16 |
17 | -
18 |
19 |
20 | Qt::Vertical
21 |
22 |
23 |
24 | 20
25 | 40
26 |
27 |
28 |
29 |
30 | -
31 |
32 |
-
33 |
34 |
35 | Qt::Horizontal
36 |
37 |
38 | QSizePolicy::Fixed
39 |
40 |
41 |
42 | 200
43 | 20
44 |
45 |
46 |
47 |
48 | -
49 |
50 |
51 | 姓名:
52 |
53 |
54 |
55 | -
56 |
57 |
58 | Qt::Horizontal
59 |
60 |
61 |
62 | 40
63 | 20
64 |
65 |
66 |
67 |
68 | -
69 |
70 |
71 | -
72 |
73 |
74 | Qt::Horizontal
75 |
76 |
77 | QSizePolicy::Fixed
78 |
79 |
80 |
81 | 200
82 | 20
83 |
84 |
85 |
86 |
87 |
88 |
89 | -
90 |
91 |
92 | Qt::Vertical
93 |
94 |
95 |
96 | 20
97 | 40
98 |
99 |
100 |
101 |
102 | -
103 |
104 |
-
105 |
106 |
107 | Qt::Horizontal
108 |
109 |
110 | QSizePolicy::Fixed
111 |
112 |
113 |
114 | 200
115 | 20
116 |
117 |
118 |
119 |
120 | -
121 |
122 |
123 | 性别:
124 |
125 |
126 |
127 | -
128 |
129 |
130 | Qt::Horizontal
131 |
132 |
133 |
134 | 40
135 | 20
136 |
137 |
138 |
139 |
140 | -
141 |
142 |
143 |
144 | 0
145 | 0
146 |
147 |
148 |
-
149 |
150 | 男
151 |
152 |
153 | -
154 |
155 | 女
156 |
157 |
158 |
159 |
160 | -
161 |
162 |
163 | Qt::Horizontal
164 |
165 |
166 | QSizePolicy::Fixed
167 |
168 |
169 |
170 | 200
171 | 20
172 |
173 |
174 |
175 |
176 |
177 |
178 | -
179 |
180 |
181 | Qt::Vertical
182 |
183 |
184 |
185 | 20
186 | 40
187 |
188 |
189 |
190 |
191 | -
192 |
193 |
-
194 |
195 |
196 | Qt::Horizontal
197 |
198 |
199 | QSizePolicy::Fixed
200 |
201 |
202 |
203 | 200
204 | 20
205 |
206 |
207 |
208 |
209 | -
210 |
211 |
212 | 手机号:
213 |
214 |
215 |
216 | -
217 |
218 |
219 | Qt::Horizontal
220 |
221 |
222 |
223 | 40
224 | 20
225 |
226 |
227 |
228 |
229 | -
230 |
231 |
232 | -
233 |
234 |
235 | Qt::Horizontal
236 |
237 |
238 | QSizePolicy::Fixed
239 |
240 |
241 |
242 | 200
243 | 20
244 |
245 |
246 |
247 |
248 |
249 |
250 | -
251 |
252 |
253 | Qt::Vertical
254 |
255 |
256 |
257 | 20
258 | 40
259 |
260 |
261 |
262 |
263 | -
264 |
265 |
-
266 |
267 |
268 | Qt::Horizontal
269 |
270 |
271 | QSizePolicy::Fixed
272 |
273 |
274 |
275 | 200
276 | 20
277 |
278 |
279 |
280 |
281 | -
282 |
283 |
284 | 单位:
285 |
286 |
287 |
288 | -
289 |
290 |
291 | Qt::Horizontal
292 |
293 |
294 |
295 | 40
296 | 20
297 |
298 |
299 |
300 |
301 | -
302 |
303 |
304 | -
305 |
306 |
307 | Qt::Horizontal
308 |
309 |
310 | QSizePolicy::Fixed
311 |
312 |
313 |
314 | 200
315 | 20
316 |
317 |
318 |
319 |
320 |
321 |
322 | -
323 |
324 |
325 | Qt::Vertical
326 |
327 |
328 |
329 | 20
330 | 40
331 |
332 |
333 |
334 |
335 | -
336 |
337 |
-
338 |
339 |
340 | Qt::Horizontal
341 |
342 |
343 | QSizePolicy::Fixed
344 |
345 |
346 |
347 | 200
348 | 20
349 |
350 |
351 |
352 |
353 | -
354 |
355 |
356 | 类别:
357 |
358 |
359 |
360 | -
361 |
362 |
363 | Qt::Horizontal
364 |
365 |
366 |
367 | 40
368 | 20
369 |
370 |
371 |
372 |
373 | -
374 |
375 |
376 |
377 | 0
378 | 0
379 |
380 |
381 |
-
382 |
383 | 教师
384 |
385 |
386 | -
387 |
388 | 研究生
389 |
390 |
391 | -
392 |
393 | 本科生
394 |
395 |
396 | -
397 |
398 | 其他
399 |
400 |
401 |
402 |
403 | -
404 |
405 |
406 | Qt::Horizontal
407 |
408 |
409 | QSizePolicy::Fixed
410 |
411 |
412 |
413 | 200
414 | 20
415 |
416 |
417 |
418 |
419 |
420 |
421 | -
422 |
423 |
424 | Qt::Vertical
425 |
426 |
427 |
428 | 20
429 | 40
430 |
431 |
432 |
433 |
434 | -
435 |
436 |
-
437 |
438 |
439 | Qt::Horizontal
440 |
441 |
442 | QSizePolicy::Fixed
443 |
444 |
445 |
446 | 200
447 | 20
448 |
449 |
450 |
451 |
452 | -
453 |
454 |
455 | 密码:
456 |
457 |
458 |
459 | -
460 |
461 |
462 | Qt::Horizontal
463 |
464 |
465 |
466 | 40
467 | 20
468 |
469 |
470 |
471 |
472 | -
473 |
474 |
475 | QLineEdit::Password
476 |
477 |
478 |
479 | -
480 |
481 |
482 | Qt::Horizontal
483 |
484 |
485 | QSizePolicy::Fixed
486 |
487 |
488 |
489 | 200
490 | 20
491 |
492 |
493 |
494 |
495 |
496 |
497 | -
498 |
499 |
500 | Qt::Vertical
501 |
502 |
503 |
504 | 20
505 | 40
506 |
507 |
508 |
509 |
510 | -
511 |
512 |
-
513 |
514 |
515 | Qt::Horizontal
516 |
517 |
518 | QSizePolicy::Fixed
519 |
520 |
521 |
522 | 200
523 | 20
524 |
525 |
526 |
527 |
528 | -
529 |
530 |
531 | 确认密码:
532 |
533 |
534 |
535 | -
536 |
537 |
538 | Qt::Horizontal
539 |
540 |
541 |
542 | 40
543 | 20
544 |
545 |
546 |
547 |
548 | -
549 |
550 |
551 | QLineEdit::Password
552 |
553 |
554 |
555 | -
556 |
557 |
558 | Qt::Horizontal
559 |
560 |
561 | QSizePolicy::Fixed
562 |
563 |
564 |
565 | 200
566 | 20
567 |
568 |
569 |
570 |
571 |
572 |
573 | -
574 |
575 |
576 | Qt::Vertical
577 |
578 |
579 |
580 | 20
581 | 40
582 |
583 |
584 |
585 |
586 | -
587 |
588 |
-
589 |
590 |
591 | Qt::Horizontal
592 |
593 |
594 | QSizePolicy::Fixed
595 |
596 |
597 |
598 | 200
599 | 20
600 |
601 |
602 |
603 |
604 | -
605 |
606 |
607 | 注册
608 |
609 |
610 |
611 | -
612 |
613 |
614 | Qt::Horizontal
615 |
616 |
617 |
618 | 40
619 | 20
620 |
621 |
622 |
623 |
624 | -
625 |
626 |
627 | 返回
628 |
629 |
630 |
631 | -
632 |
633 |
634 | Qt::Horizontal
635 |
636 |
637 | QSizePolicy::Fixed
638 |
639 |
640 |
641 | 200
642 | 20
643 |
644 |
645 |
646 |
647 |
648 |
649 | -
650 |
651 |
652 | Qt::Vertical
653 |
654 |
655 |
656 | 20
657 | 40
658 |
659 |
660 |
661 |
662 |
663 |
664 |
665 |
666 |
667 |
--------------------------------------------------------------------------------
/widget/ui_addbookwidget.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | ################################################################################
4 | ## Form generated from reading UI file 'addbookwidget.ui'
5 | ##
6 | ## Created by: Qt User Interface Compiler version 6.5.1
7 | ##
8 | ## WARNING! All changes made in this file will be lost when recompiling UI file!
9 | ################################################################################
10 |
11 | from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
12 | QMetaObject, QObject, QPoint, QRect,
13 | QSize, QTime, QUrl, Qt)
14 | from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
15 | QFont, QFontDatabase, QGradient, QIcon,
16 | QImage, QKeySequence, QLinearGradient, QPainter,
17 | QPalette, QPixmap, QRadialGradient, QTransform)
18 | from PySide6.QtWidgets import (QApplication, QDateEdit, QDoubleSpinBox, QHBoxLayout,
19 | QLabel, QLineEdit, QPushButton, QSizePolicy,
20 | QSpacerItem, QVBoxLayout, QWidget)
21 |
22 | class Ui_AddBookWidget(object):
23 | def setupUi(self, AddBookWidget):
24 | if not AddBookWidget.objectName():
25 | AddBookWidget.setObjectName(u"AddBookWidget")
26 | AddBookWidget.resize(675, 389)
27 | self.verticalLayout = QVBoxLayout(AddBookWidget)
28 | self.verticalLayout.setObjectName(u"verticalLayout")
29 | self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
30 |
31 | self.verticalLayout.addItem(self.verticalSpacer)
32 |
33 | self.horizontalLayout = QHBoxLayout()
34 | self.horizontalLayout.setObjectName(u"horizontalLayout")
35 | self.horizontalSpacer = QSpacerItem(200, 20, QSizePolicy.Fixed, QSizePolicy.Minimum)
36 |
37 | self.horizontalLayout.addItem(self.horizontalSpacer)
38 |
39 | self.label = QLabel(AddBookWidget)
40 | self.label.setObjectName(u"label")
41 |
42 | self.horizontalLayout.addWidget(self.label)
43 |
44 | self.horizontalSpacer_15 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
45 |
46 | self.horizontalLayout.addItem(self.horizontalSpacer_15)
47 |
48 | self.m_titleLineEdit = QLineEdit(AddBookWidget)
49 | self.m_titleLineEdit.setObjectName(u"m_titleLineEdit")
50 |
51 | self.horizontalLayout.addWidget(self.m_titleLineEdit)
52 |
53 | self.horizontalSpacer_7 = QSpacerItem(200, 20, QSizePolicy.Fixed, QSizePolicy.Minimum)
54 |
55 | self.horizontalLayout.addItem(self.horizontalSpacer_7)
56 |
57 |
58 | self.verticalLayout.addLayout(self.horizontalLayout)
59 |
60 | self.verticalSpacer_2 = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
61 |
62 | self.verticalLayout.addItem(self.verticalSpacer_2)
63 |
64 | self.horizontalLayout_2 = QHBoxLayout()
65 | self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
66 | self.horizontalSpacer_2 = QSpacerItem(200, 20, QSizePolicy.Fixed, QSizePolicy.Minimum)
67 |
68 | self.horizontalLayout_2.addItem(self.horizontalSpacer_2)
69 |
70 | self.label_2 = QLabel(AddBookWidget)
71 | self.label_2.setObjectName(u"label_2")
72 |
73 | self.horizontalLayout_2.addWidget(self.label_2)
74 |
75 | self.horizontalSpacer_16 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
76 |
77 | self.horizontalLayout_2.addItem(self.horizontalSpacer_16)
78 |
79 | self.m_authorLineEdit = QLineEdit(AddBookWidget)
80 | self.m_authorLineEdit.setObjectName(u"m_authorLineEdit")
81 |
82 | self.horizontalLayout_2.addWidget(self.m_authorLineEdit)
83 |
84 | self.horizontalSpacer_8 = QSpacerItem(200, 20, QSizePolicy.Fixed, QSizePolicy.Minimum)
85 |
86 | self.horizontalLayout_2.addItem(self.horizontalSpacer_8)
87 |
88 |
89 | self.verticalLayout.addLayout(self.horizontalLayout_2)
90 |
91 | self.verticalSpacer_3 = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
92 |
93 | self.verticalLayout.addItem(self.verticalSpacer_3)
94 |
95 | self.horizontalLayout_3 = QHBoxLayout()
96 | self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
97 | self.horizontalSpacer_3 = QSpacerItem(200, 20, QSizePolicy.Fixed, QSizePolicy.Minimum)
98 |
99 | self.horizontalLayout_3.addItem(self.horizontalSpacer_3)
100 |
101 | self.label_3 = QLabel(AddBookWidget)
102 | self.label_3.setObjectName(u"label_3")
103 |
104 | self.horizontalLayout_3.addWidget(self.label_3)
105 |
106 | self.horizontalSpacer_17 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
107 |
108 | self.horizontalLayout_3.addItem(self.horizontalSpacer_17)
109 |
110 | self.m_publishDateEdit = QDateEdit(AddBookWidget)
111 | self.m_publishDateEdit.setObjectName(u"m_publishDateEdit")
112 | sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
113 | sizePolicy.setHorizontalStretch(0)
114 | sizePolicy.setVerticalStretch(0)
115 | sizePolicy.setHeightForWidth(self.m_publishDateEdit.sizePolicy().hasHeightForWidth())
116 | self.m_publishDateEdit.setSizePolicy(sizePolicy)
117 |
118 | self.horizontalLayout_3.addWidget(self.m_publishDateEdit)
119 |
120 | self.horizontalSpacer_9 = QSpacerItem(200, 20, QSizePolicy.Fixed, QSizePolicy.Minimum)
121 |
122 | self.horizontalLayout_3.addItem(self.horizontalSpacer_9)
123 |
124 |
125 | self.verticalLayout.addLayout(self.horizontalLayout_3)
126 |
127 | self.verticalSpacer_4 = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
128 |
129 | self.verticalLayout.addItem(self.verticalSpacer_4)
130 |
131 | self.horizontalLayout_4 = QHBoxLayout()
132 | self.horizontalLayout_4.setObjectName(u"horizontalLayout_4")
133 | self.horizontalSpacer_4 = QSpacerItem(200, 20, QSizePolicy.Fixed, QSizePolicy.Minimum)
134 |
135 | self.horizontalLayout_4.addItem(self.horizontalSpacer_4)
136 |
137 | self.label_4 = QLabel(AddBookWidget)
138 | self.label_4.setObjectName(u"label_4")
139 |
140 | self.horizontalLayout_4.addWidget(self.label_4)
141 |
142 | self.horizontalSpacer_18 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
143 |
144 | self.horizontalLayout_4.addItem(self.horizontalSpacer_18)
145 |
146 | self.m_publishLineEdit = QLineEdit(AddBookWidget)
147 | self.m_publishLineEdit.setObjectName(u"m_publishLineEdit")
148 |
149 | self.horizontalLayout_4.addWidget(self.m_publishLineEdit)
150 |
151 | self.horizontalSpacer_10 = QSpacerItem(200, 20, QSizePolicy.Fixed, QSizePolicy.Minimum)
152 |
153 | self.horizontalLayout_4.addItem(self.horizontalSpacer_10)
154 |
155 |
156 | self.verticalLayout.addLayout(self.horizontalLayout_4)
157 |
158 | self.verticalSpacer_5 = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
159 |
160 | self.verticalLayout.addItem(self.verticalSpacer_5)
161 |
162 | self.horizontalLayout_5 = QHBoxLayout()
163 | self.horizontalLayout_5.setObjectName(u"horizontalLayout_5")
164 | self.horizontalSpacer_5 = QSpacerItem(200, 20, QSizePolicy.Fixed, QSizePolicy.Minimum)
165 |
166 | self.horizontalLayout_5.addItem(self.horizontalSpacer_5)
167 |
168 | self.label_5 = QLabel(AddBookWidget)
169 | self.label_5.setObjectName(u"label_5")
170 |
171 | self.horizontalLayout_5.addWidget(self.label_5)
172 |
173 | self.horizontalSpacer_19 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
174 |
175 | self.horizontalLayout_5.addItem(self.horizontalSpacer_19)
176 |
177 | self.m_priceSpinBox = QDoubleSpinBox(AddBookWidget)
178 | self.m_priceSpinBox.setObjectName(u"m_priceSpinBox")
179 | sizePolicy.setHeightForWidth(self.m_priceSpinBox.sizePolicy().hasHeightForWidth())
180 | self.m_priceSpinBox.setSizePolicy(sizePolicy)
181 |
182 | self.horizontalLayout_5.addWidget(self.m_priceSpinBox)
183 |
184 | self.horizontalSpacer_11 = QSpacerItem(200, 20, QSizePolicy.Fixed, QSizePolicy.Minimum)
185 |
186 | self.horizontalLayout_5.addItem(self.horizontalSpacer_11)
187 |
188 |
189 | self.verticalLayout.addLayout(self.horizontalLayout_5)
190 |
191 | self.verticalSpacer_6 = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
192 |
193 | self.verticalLayout.addItem(self.verticalSpacer_6)
194 |
195 | self.horizontalLayout_6 = QHBoxLayout()
196 | self.horizontalLayout_6.setObjectName(u"horizontalLayout_6")
197 | self.horizontalSpacer_6 = QSpacerItem(200, 20, QSizePolicy.Fixed, QSizePolicy.Minimum)
198 |
199 | self.horizontalLayout_6.addItem(self.horizontalSpacer_6)
200 |
201 | self.label_6 = QLabel(AddBookWidget)
202 | self.label_6.setObjectName(u"label_6")
203 |
204 | self.horizontalLayout_6.addWidget(self.label_6)
205 |
206 | self.horizontalSpacer_20 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
207 |
208 | self.horizontalLayout_6.addItem(self.horizontalSpacer_20)
209 |
210 | self.m_introLineEdit = QLineEdit(AddBookWidget)
211 | self.m_introLineEdit.setObjectName(u"m_introLineEdit")
212 |
213 | self.horizontalLayout_6.addWidget(self.m_introLineEdit)
214 |
215 | self.horizontalSpacer_12 = QSpacerItem(200, 20, QSizePolicy.Fixed, QSizePolicy.Minimum)
216 |
217 | self.horizontalLayout_6.addItem(self.horizontalSpacer_12)
218 |
219 |
220 | self.verticalLayout.addLayout(self.horizontalLayout_6)
221 |
222 | self.verticalSpacer_7 = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
223 |
224 | self.verticalLayout.addItem(self.verticalSpacer_7)
225 |
226 | self.horizontalLayout_7 = QHBoxLayout()
227 | self.horizontalLayout_7.setObjectName(u"horizontalLayout_7")
228 | self.horizontalSpacer_13 = QSpacerItem(200, 20, QSizePolicy.Fixed, QSizePolicy.Minimum)
229 |
230 | self.horizontalLayout_7.addItem(self.horizontalSpacer_13)
231 |
232 | self.m_addButton = QPushButton(AddBookWidget)
233 | self.m_addButton.setObjectName(u"m_addButton")
234 |
235 | self.horizontalLayout_7.addWidget(self.m_addButton)
236 |
237 | self.horizontalSpacer_21 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
238 |
239 | self.horizontalLayout_7.addItem(self.horizontalSpacer_21)
240 |
241 | self.m_returnButton = QPushButton(AddBookWidget)
242 | self.m_returnButton.setObjectName(u"m_returnButton")
243 |
244 | self.horizontalLayout_7.addWidget(self.m_returnButton)
245 |
246 | self.horizontalSpacer_14 = QSpacerItem(200, 20, QSizePolicy.Fixed, QSizePolicy.Minimum)
247 |
248 | self.horizontalLayout_7.addItem(self.horizontalSpacer_14)
249 |
250 |
251 | self.verticalLayout.addLayout(self.horizontalLayout_7)
252 |
253 | self.verticalSpacer_8 = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
254 |
255 | self.verticalLayout.addItem(self.verticalSpacer_8)
256 |
257 |
258 | self.retranslateUi(AddBookWidget)
259 |
260 | QMetaObject.connectSlotsByName(AddBookWidget)
261 | # setupUi
262 |
263 | def retranslateUi(self, AddBookWidget):
264 | AddBookWidget.setWindowTitle(QCoreApplication.translate("AddBookWidget", u"\u6dfb\u52a0\u65b0\u4e66", None))
265 | self.label.setText(QCoreApplication.translate("AddBookWidget", u"\u6807\u9898\uff1a", None))
266 | self.label_2.setText(QCoreApplication.translate("AddBookWidget", u"\u4f5c\u8005\uff1a", None))
267 | self.label_3.setText(QCoreApplication.translate("AddBookWidget", u"\u51fa\u7248\u65e5\u671f\uff1a", None))
268 | self.label_4.setText(QCoreApplication.translate("AddBookWidget", u"\u51fa\u7248\u793e\uff1a", None))
269 | self.label_5.setText(QCoreApplication.translate("AddBookWidget", u"\u4ef7\u683c\uff1a", None))
270 | self.label_6.setText(QCoreApplication.translate("AddBookWidget", u"\u7b80\u4ecb\uff1a", None))
271 | self.m_addButton.setText(QCoreApplication.translate("AddBookWidget", u"\u786e\u8ba4\u6dfb\u52a0", None))
272 | self.m_returnButton.setText(QCoreApplication.translate("AddBookWidget", u"\u8fd4\u56de", None))
273 | # retranslateUi
274 |
275 |
--------------------------------------------------------------------------------
/widget/ui_administerloginwidget.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | ################################################################################
4 | ## Form generated from reading UI file 'administerloginwidget.ui'
5 | ##
6 | ## Created by: Qt User Interface Compiler version 6.5.1
7 | ##
8 | ## WARNING! All changes made in this file will be lost when recompiling UI file!
9 | ################################################################################
10 |
11 | from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
12 | QMetaObject, QObject, QPoint, QRect,
13 | QSize, QTime, QUrl, Qt)
14 | from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
15 | QFont, QFontDatabase, QGradient, QIcon,
16 | QImage, QKeySequence, QLinearGradient, QPainter,
17 | QPalette, QPixmap, QRadialGradient, QTransform)
18 | from PySide6.QtWidgets import (QApplication, QHBoxLayout, QLabel, QLineEdit,
19 | QPushButton, QSizePolicy, QSpacerItem, QVBoxLayout,
20 | QWidget)
21 |
22 | class Ui_AdministerLoginWidget(object):
23 | def setupUi(self, AdministerLoginWidget):
24 | if not AdministerLoginWidget.objectName():
25 | AdministerLoginWidget.setObjectName(u"AdministerLoginWidget")
26 | AdministerLoginWidget.resize(796, 568)
27 | self.verticalLayout = QVBoxLayout(AdministerLoginWidget)
28 | self.verticalLayout.setObjectName(u"verticalLayout")
29 | self.verticalSpacer_4 = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
30 |
31 | self.verticalLayout.addItem(self.verticalSpacer_4)
32 |
33 | self.label = QLabel(AdministerLoginWidget)
34 | self.label.setObjectName(u"label")
35 | font = QFont()
36 | font.setFamilies([u"\u9ed1\u4f53"])
37 | font.setPointSize(16)
38 | self.label.setFont(font)
39 | self.label.setAlignment(Qt.AlignCenter)
40 |
41 | self.verticalLayout.addWidget(self.label)
42 |
43 | self.verticalSpacer_3 = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
44 |
45 | self.verticalLayout.addItem(self.verticalSpacer_3)
46 |
47 | self.horizontalLayout = QHBoxLayout()
48 | self.horizontalLayout.setObjectName(u"horizontalLayout")
49 | self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
50 |
51 | self.horizontalLayout.addItem(self.horizontalSpacer)
52 |
53 | self.label_2 = QLabel(AdministerLoginWidget)
54 | self.label_2.setObjectName(u"label_2")
55 |
56 | self.horizontalLayout.addWidget(self.label_2)
57 |
58 | self.m_accountLineEdit = QLineEdit(AdministerLoginWidget)
59 | self.m_accountLineEdit.setObjectName(u"m_accountLineEdit")
60 |
61 | self.horizontalLayout.addWidget(self.m_accountLineEdit)
62 |
63 | self.horizontalSpacer_3 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
64 |
65 | self.horizontalLayout.addItem(self.horizontalSpacer_3)
66 |
67 |
68 | self.verticalLayout.addLayout(self.horizontalLayout)
69 |
70 | self.verticalSpacer_2 = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
71 |
72 | self.verticalLayout.addItem(self.verticalSpacer_2)
73 |
74 | self.horizontalLayout_2 = QHBoxLayout()
75 | self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
76 | self.horizontalSpacer_2 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
77 |
78 | self.horizontalLayout_2.addItem(self.horizontalSpacer_2)
79 |
80 | self.label_3 = QLabel(AdministerLoginWidget)
81 | self.label_3.setObjectName(u"label_3")
82 |
83 | self.horizontalLayout_2.addWidget(self.label_3)
84 |
85 | self.m_passwordLineEdit = QLineEdit(AdministerLoginWidget)
86 | self.m_passwordLineEdit.setObjectName(u"m_passwordLineEdit")
87 | self.m_passwordLineEdit.setEchoMode(QLineEdit.Password)
88 |
89 | self.horizontalLayout_2.addWidget(self.m_passwordLineEdit)
90 |
91 | self.horizontalSpacer_4 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
92 |
93 | self.horizontalLayout_2.addItem(self.horizontalSpacer_4)
94 |
95 |
96 | self.verticalLayout.addLayout(self.horizontalLayout_2)
97 |
98 | self.verticalSpacer_5 = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
99 |
100 | self.verticalLayout.addItem(self.verticalSpacer_5)
101 |
102 | self.horizontalLayout_3 = QHBoxLayout()
103 | self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
104 | self.horizontalSpacer_5 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
105 |
106 | self.horizontalLayout_3.addItem(self.horizontalSpacer_5)
107 |
108 | self.m_loginButton = QPushButton(AdministerLoginWidget)
109 | self.m_loginButton.setObjectName(u"m_loginButton")
110 |
111 | self.horizontalLayout_3.addWidget(self.m_loginButton)
112 |
113 | self.horizontalSpacer_7 = QSpacerItem(40, 20, QSizePolicy.Fixed, QSizePolicy.Minimum)
114 |
115 | self.horizontalLayout_3.addItem(self.horizontalSpacer_7)
116 |
117 | self.m_returnButton = QPushButton(AdministerLoginWidget)
118 | self.m_returnButton.setObjectName(u"m_returnButton")
119 |
120 | self.horizontalLayout_3.addWidget(self.m_returnButton)
121 |
122 | self.horizontalSpacer_6 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
123 |
124 | self.horizontalLayout_3.addItem(self.horizontalSpacer_6)
125 |
126 |
127 | self.verticalLayout.addLayout(self.horizontalLayout_3)
128 |
129 | self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
130 |
131 | self.verticalLayout.addItem(self.verticalSpacer)
132 |
133 |
134 | self.retranslateUi(AdministerLoginWidget)
135 |
136 | QMetaObject.connectSlotsByName(AdministerLoginWidget)
137 | # setupUi
138 |
139 | def retranslateUi(self, AdministerLoginWidget):
140 | AdministerLoginWidget.setWindowTitle(QCoreApplication.translate("AdministerLoginWidget", u"Form", None))
141 | self.label.setText(QCoreApplication.translate("AdministerLoginWidget", u"\u7ba1\u7406\u5458\u767b\u5f55", None))
142 | self.label_2.setText(QCoreApplication.translate("AdministerLoginWidget", u"\u5e10\u53f7\uff1a", None))
143 | self.m_accountLineEdit.setText("")
144 | self.label_3.setText(QCoreApplication.translate("AdministerLoginWidget", u"\u5bc6\u7801\uff1a", None))
145 | self.m_passwordLineEdit.setText("")
146 | self.m_loginButton.setText(QCoreApplication.translate("AdministerLoginWidget", u"\u767b\u5f55", None))
147 | self.m_returnButton.setText(QCoreApplication.translate("AdministerLoginWidget", u"\u8fd4\u56de", None))
148 | # retranslateUi
149 |
150 |
--------------------------------------------------------------------------------
/widget/ui_adminwidget.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | ################################################################################
4 | ## Form generated from reading UI file 'adminwidget.ui'
5 | ##
6 | ## Created by: Qt User Interface Compiler version 6.5.1
7 | ##
8 | ## WARNING! All changes made in this file will be lost when recompiling UI file!
9 | ################################################################################
10 |
11 | from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
12 | QMetaObject, QObject, QPoint, QRect,
13 | QSize, QTime, QUrl, Qt)
14 | from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
15 | QFont, QFontDatabase, QGradient, QIcon,
16 | QImage, QKeySequence, QLinearGradient, QPainter,
17 | QPalette, QPixmap, QRadialGradient, QTransform)
18 | from PySide6.QtWidgets import (QApplication, QHBoxLayout, QHeaderView, QPushButton,
19 | QSizePolicy, QSpacerItem, QVBoxLayout, QWidget)
20 |
21 | from view.bookinfoviewforadmin import BookInfoViewForAdmin
22 |
23 | class Ui_AdminWidget(object):
24 | def setupUi(self, AdminWidget):
25 | if not AdminWidget.objectName():
26 | AdminWidget.setObjectName(u"AdminWidget")
27 | AdminWidget.resize(631, 464)
28 | self.verticalLayout = QVBoxLayout(AdminWidget)
29 | self.verticalLayout.setObjectName(u"verticalLayout")
30 | self.horizontalLayout = QHBoxLayout()
31 | self.horizontalLayout.setObjectName(u"horizontalLayout")
32 | self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
33 |
34 | self.horizontalLayout.addItem(self.horizontalSpacer)
35 |
36 | self.m_addBookButton = QPushButton(AdminWidget)
37 | self.m_addBookButton.setObjectName(u"m_addBookButton")
38 |
39 | self.horizontalLayout.addWidget(self.m_addBookButton)
40 |
41 | self.m_logoutButton = QPushButton(AdminWidget)
42 | self.m_logoutButton.setObjectName(u"m_logoutButton")
43 | self.m_logoutButton.setStyleSheet(u"background-color: red")
44 |
45 | self.horizontalLayout.addWidget(self.m_logoutButton)
46 |
47 |
48 | self.verticalLayout.addLayout(self.horizontalLayout)
49 |
50 | self.m_bookInfoView = BookInfoViewForAdmin(AdminWidget)
51 | self.m_bookInfoView.setObjectName(u"m_bookInfoView")
52 |
53 | self.verticalLayout.addWidget(self.m_bookInfoView)
54 |
55 |
56 | self.retranslateUi(AdminWidget)
57 |
58 | QMetaObject.connectSlotsByName(AdminWidget)
59 | # setupUi
60 |
61 | def retranslateUi(self, AdminWidget):
62 | AdminWidget.setWindowTitle(QCoreApplication.translate("AdminWidget", u"Form", None))
63 | self.m_addBookButton.setText(QCoreApplication.translate("AdminWidget", u"\u6dfb\u52a0\u4e66\u7c4d", None))
64 | self.m_logoutButton.setText(QCoreApplication.translate("AdminWidget", u"\u9000\u51fa\u767b\u5f55", None))
65 | # retranslateUi
66 |
67 |
--------------------------------------------------------------------------------
/widget/ui_borrowwidget.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | ################################################################################
4 | ## Form generated from reading UI file 'borrowwidget.ui'
5 | ##
6 | ## Created by: Qt User Interface Compiler version 6.5.1
7 | ##
8 | ## WARNING! All changes made in this file will be lost when recompiling UI file!
9 | ################################################################################
10 |
11 | from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
12 | QMetaObject, QObject, QPoint, QRect,
13 | QSize, QTime, QUrl, Qt)
14 | from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
15 | QFont, QFontDatabase, QGradient, QIcon,
16 | QImage, QKeySequence, QLinearGradient, QPainter,
17 | QPalette, QPixmap, QRadialGradient, QTransform)
18 | from PySide6.QtWidgets import (QApplication, QHBoxLayout, QHeaderView, QPushButton,
19 | QSizePolicy, QSpacerItem, QVBoxLayout, QWidget)
20 |
21 | from view.bookinfoviewforreader import BookInfoViewForReader
22 | from view.userinfoview import UserInfoView
23 |
24 | class Ui_BorrowWidget(object):
25 | def setupUi(self, BorrowWidget):
26 | if not BorrowWidget.objectName():
27 | BorrowWidget.setObjectName(u"BorrowWidget")
28 | BorrowWidget.resize(631, 464)
29 | self.verticalLayout = QVBoxLayout(BorrowWidget)
30 | self.verticalLayout.setObjectName(u"verticalLayout")
31 | self.m_userInfoView = UserInfoView(BorrowWidget)
32 | self.m_userInfoView.setObjectName(u"m_userInfoView")
33 | sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)
34 | sizePolicy.setHorizontalStretch(0)
35 | sizePolicy.setVerticalStretch(0)
36 | sizePolicy.setHeightForWidth(self.m_userInfoView.sizePolicy().hasHeightForWidth())
37 | self.m_userInfoView.setSizePolicy(sizePolicy)
38 | self.m_userInfoView.setMinimumSize(QSize(0, 100))
39 | self.m_userInfoView.setMaximumSize(QSize(16777215, 100))
40 |
41 | self.verticalLayout.addWidget(self.m_userInfoView)
42 |
43 | self.horizontalLayout = QHBoxLayout()
44 | self.horizontalLayout.setObjectName(u"horizontalLayout")
45 | self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
46 |
47 | self.horizontalLayout.addItem(self.horizontalSpacer)
48 |
49 | self.m_logoutButton = QPushButton(BorrowWidget)
50 | self.m_logoutButton.setObjectName(u"m_logoutButton")
51 | self.m_logoutButton.setStyleSheet(u"background-color: red; color: white;")
52 |
53 | self.horizontalLayout.addWidget(self.m_logoutButton)
54 |
55 |
56 | self.verticalLayout.addLayout(self.horizontalLayout)
57 |
58 | self.m_bookInfoView = BookInfoViewForReader(BorrowWidget)
59 | self.m_bookInfoView.setObjectName(u"m_bookInfoView")
60 |
61 | self.verticalLayout.addWidget(self.m_bookInfoView)
62 |
63 |
64 | self.retranslateUi(BorrowWidget)
65 |
66 | QMetaObject.connectSlotsByName(BorrowWidget)
67 | # setupUi
68 |
69 | def retranslateUi(self, BorrowWidget):
70 | BorrowWidget.setWindowTitle(QCoreApplication.translate("BorrowWidget", u"Form", None))
71 | self.m_logoutButton.setText(QCoreApplication.translate("BorrowWidget", u"\u9000\u51fa\u767b\u5f55", None))
72 | # retranslateUi
73 |
74 |
--------------------------------------------------------------------------------
/widget/ui_mainwindow.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | ################################################################################
4 | ## Form generated from reading UI file 'mainwindow.ui'
5 | ##
6 | ## Created by: Qt User Interface Compiler version 6.5.1
7 | ##
8 | ## WARNING! All changes made in this file will be lost when recompiling UI file!
9 | ################################################################################
10 |
11 | from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
12 | QMetaObject, QObject, QPoint, QRect,
13 | QSize, QTime, QUrl, Qt)
14 | from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
15 | QFont, QFontDatabase, QGradient, QIcon,
16 | QImage, QKeySequence, QLinearGradient, QPainter,
17 | QPalette, QPixmap, QRadialGradient, QTransform)
18 | from PySide6.QtWidgets import (QApplication, QHBoxLayout, QLabel, QPushButton,
19 | QSizePolicy, QSpacerItem, QStackedWidget, QVBoxLayout,
20 | QWidget)
21 |
22 | from widget.addbookwidget import AddBookWidget
23 | from widget.administerloginwidget import AdministerLoginWidget
24 | from widget.adminwidget import AdminWidget
25 | from widget.borrowwidget import BorrowWidget
26 | from widget.readerloginwidget import ReaderLoginWidget
27 | from widget.registerwidget import RegisterWidget
28 |
29 | class Ui_MainWindow(object):
30 | def setupUi(self, MainWindow):
31 | if not MainWindow.objectName():
32 | MainWindow.setObjectName(u"MainWindow")
33 | MainWindow.resize(708, 451)
34 | MainWindow.setStyleSheet(u"QPushButton {\n"
35 | " border-radius: 5px;\n"
36 | " background-color: rgb(64, 158, 255);\n"
37 | " color: white;\n"
38 | " min-height: 25px;\n"
39 | " max-height: 25px;\n"
40 | " min-width: 70px;\n"
41 | " max-width: 70px;\n"
42 | "}\n"
43 | "QPushButton:hover {\n"
44 | " background-color: rgb(102, 177, 255);\n"
45 | "}\n"
46 | "\n"
47 | "#m_welcomeWidget {\n"
48 | " background-color: white;\n"
49 | "}")
50 | self.m_welcomeWidget = QWidget()
51 | self.m_welcomeWidget.setObjectName(u"m_welcomeWidget")
52 | self.verticalLayout = QVBoxLayout(self.m_welcomeWidget)
53 | self.verticalLayout.setObjectName(u"verticalLayout")
54 | self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
55 |
56 | self.verticalLayout.addItem(self.verticalSpacer)
57 |
58 | self.label = QLabel(self.m_welcomeWidget)
59 | self.label.setObjectName(u"label")
60 | font = QFont()
61 | font.setFamilies([u"\u9ed1\u4f53"])
62 | font.setPointSize(16)
63 | self.label.setFont(font)
64 | self.label.setAlignment(Qt.AlignCenter)
65 |
66 | self.verticalLayout.addWidget(self.label)
67 |
68 | self.verticalSpacer_2 = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
69 |
70 | self.verticalLayout.addItem(self.verticalSpacer_2)
71 |
72 | self.horizontalLayout = QHBoxLayout()
73 | self.horizontalLayout.setObjectName(u"horizontalLayout")
74 | self.horizontalSpacer_2 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
75 |
76 | self.horizontalLayout.addItem(self.horizontalSpacer_2)
77 |
78 | self.m_readerLoginButton = QPushButton(self.m_welcomeWidget)
79 | self.m_readerLoginButton.setObjectName(u"m_readerLoginButton")
80 |
81 | self.horizontalLayout.addWidget(self.m_readerLoginButton)
82 |
83 | self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
84 |
85 | self.horizontalLayout.addItem(self.horizontalSpacer)
86 |
87 | self.m_administerLoginButton = QPushButton(self.m_welcomeWidget)
88 | self.m_administerLoginButton.setObjectName(u"m_administerLoginButton")
89 |
90 | self.horizontalLayout.addWidget(self.m_administerLoginButton)
91 |
92 | self.horizontalSpacer_3 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
93 |
94 | self.horizontalLayout.addItem(self.horizontalSpacer_3)
95 |
96 |
97 | self.verticalLayout.addLayout(self.horizontalLayout)
98 |
99 | self.verticalSpacer_3 = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
100 |
101 | self.verticalLayout.addItem(self.verticalSpacer_3)
102 |
103 | MainWindow.addWidget(self.m_welcomeWidget)
104 | self.m_readerLoginWidget = ReaderLoginWidget()
105 | self.m_readerLoginWidget.setObjectName(u"m_readerLoginWidget")
106 | MainWindow.addWidget(self.m_readerLoginWidget)
107 | self.m_administerLoginWidget = AdministerLoginWidget()
108 | self.m_administerLoginWidget.setObjectName(u"m_administerLoginWidget")
109 | MainWindow.addWidget(self.m_administerLoginWidget)
110 | self.m_borrowWidget = BorrowWidget()
111 | self.m_borrowWidget.setObjectName(u"m_borrowWidget")
112 | MainWindow.addWidget(self.m_borrowWidget)
113 | self.m_registerWidget = RegisterWidget()
114 | self.m_registerWidget.setObjectName(u"m_registerWidget")
115 | MainWindow.addWidget(self.m_registerWidget)
116 | self.m_adminWidget = AdminWidget()
117 | self.m_adminWidget.setObjectName(u"m_adminWidget")
118 | MainWindow.addWidget(self.m_adminWidget)
119 | self.m_addBookWidget = AddBookWidget()
120 | self.m_addBookWidget.setObjectName(u"m_addBookWidget")
121 | MainWindow.addWidget(self.m_addBookWidget)
122 |
123 | self.retranslateUi(MainWindow)
124 |
125 | QMetaObject.connectSlotsByName(MainWindow)
126 | # setupUi
127 |
128 | def retranslateUi(self, MainWindow):
129 | MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"\u56fe\u4e66\u7ba1\u7406\u7cfb\u7edf", None))
130 | self.label.setText(QCoreApplication.translate("MainWindow", u"\u6b22\u8fce\u4f7f\u7528\u56fe\u4e66\u7ba1\u7406\u7cfb\u7edf", None))
131 | self.m_readerLoginButton.setText(QCoreApplication.translate("MainWindow", u"\u8bfb\u8005\u767b\u5f55", None))
132 | self.m_administerLoginButton.setText(QCoreApplication.translate("MainWindow", u"\u7ba1\u7406\u5458\u767b\u5f55", None))
133 | # retranslateUi
134 |
135 |
--------------------------------------------------------------------------------
/widget/ui_readerloginwidget.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | ################################################################################
4 | ## Form generated from reading UI file 'readerloginwidget.ui'
5 | ##
6 | ## Created by: Qt User Interface Compiler version 6.5.1
7 | ##
8 | ## WARNING! All changes made in this file will be lost when recompiling UI file!
9 | ################################################################################
10 |
11 | from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
12 | QMetaObject, QObject, QPoint, QRect,
13 | QSize, QTime, QUrl, Qt)
14 | from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
15 | QFont, QFontDatabase, QGradient, QIcon,
16 | QImage, QKeySequence, QLinearGradient, QPainter,
17 | QPalette, QPixmap, QRadialGradient, QTransform)
18 | from PySide6.QtWidgets import (QApplication, QHBoxLayout, QLabel, QLineEdit,
19 | QPushButton, QSizePolicy, QSpacerItem, QVBoxLayout,
20 | QWidget)
21 |
22 | class Ui_ReaderLoginWidget(object):
23 | def setupUi(self, ReaderLoginWidget):
24 | if not ReaderLoginWidget.objectName():
25 | ReaderLoginWidget.setObjectName(u"ReaderLoginWidget")
26 | ReaderLoginWidget.resize(591, 456)
27 | self.verticalLayout = QVBoxLayout(ReaderLoginWidget)
28 | self.verticalLayout.setObjectName(u"verticalLayout")
29 | self.verticalSpacer_5 = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
30 |
31 | self.verticalLayout.addItem(self.verticalSpacer_5)
32 |
33 | self.label_3 = QLabel(ReaderLoginWidget)
34 | self.label_3.setObjectName(u"label_3")
35 | font = QFont()
36 | font.setFamilies([u"\u9ed1\u4f53"])
37 | font.setPointSize(16)
38 | self.label_3.setFont(font)
39 | self.label_3.setAlignment(Qt.AlignCenter)
40 |
41 | self.verticalLayout.addWidget(self.label_3)
42 |
43 | self.verticalSpacer_2 = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
44 |
45 | self.verticalLayout.addItem(self.verticalSpacer_2)
46 |
47 | self.horizontalLayout = QHBoxLayout()
48 | self.horizontalLayout.setObjectName(u"horizontalLayout")
49 | self.horizontalSpacer_2 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
50 |
51 | self.horizontalLayout.addItem(self.horizontalSpacer_2)
52 |
53 | self.label = QLabel(ReaderLoginWidget)
54 | self.label.setObjectName(u"label")
55 |
56 | self.horizontalLayout.addWidget(self.label)
57 |
58 | self.m_accountLineEdit = QLineEdit(ReaderLoginWidget)
59 | self.m_accountLineEdit.setObjectName(u"m_accountLineEdit")
60 |
61 | self.horizontalLayout.addWidget(self.m_accountLineEdit)
62 |
63 | self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
64 |
65 | self.horizontalLayout.addItem(self.horizontalSpacer)
66 |
67 |
68 | self.verticalLayout.addLayout(self.horizontalLayout)
69 |
70 | self.verticalSpacer_3 = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
71 |
72 | self.verticalLayout.addItem(self.verticalSpacer_3)
73 |
74 | self.horizontalLayout_2 = QHBoxLayout()
75 | self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
76 | self.horizontalSpacer_4 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
77 |
78 | self.horizontalLayout_2.addItem(self.horizontalSpacer_4)
79 |
80 | self.label_2 = QLabel(ReaderLoginWidget)
81 | self.label_2.setObjectName(u"label_2")
82 |
83 | self.horizontalLayout_2.addWidget(self.label_2)
84 |
85 | self.m_passwordLineEdit = QLineEdit(ReaderLoginWidget)
86 | self.m_passwordLineEdit.setObjectName(u"m_passwordLineEdit")
87 | self.m_passwordLineEdit.setEchoMode(QLineEdit.Password)
88 |
89 | self.horizontalLayout_2.addWidget(self.m_passwordLineEdit)
90 |
91 | self.horizontalSpacer_3 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
92 |
93 | self.horizontalLayout_2.addItem(self.horizontalSpacer_3)
94 |
95 |
96 | self.verticalLayout.addLayout(self.horizontalLayout_2)
97 |
98 | self.verticalSpacer_4 = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
99 |
100 | self.verticalLayout.addItem(self.verticalSpacer_4)
101 |
102 | self.horizontalLayout_3 = QHBoxLayout()
103 | self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
104 | self.horizontalSpacer_6 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
105 |
106 | self.horizontalLayout_3.addItem(self.horizontalSpacer_6)
107 |
108 | self.m_loginButton = QPushButton(ReaderLoginWidget)
109 | self.m_loginButton.setObjectName(u"m_loginButton")
110 |
111 | self.horizontalLayout_3.addWidget(self.m_loginButton)
112 |
113 | self.horizontalSpacer_7 = QSpacerItem(40, 20, QSizePolicy.Fixed, QSizePolicy.Minimum)
114 |
115 | self.horizontalLayout_3.addItem(self.horizontalSpacer_7)
116 |
117 | self.m_registerButton = QPushButton(ReaderLoginWidget)
118 | self.m_registerButton.setObjectName(u"m_registerButton")
119 |
120 | self.horizontalLayout_3.addWidget(self.m_registerButton)
121 |
122 | self.horizontalSpacer_8 = QSpacerItem(40, 20, QSizePolicy.Fixed, QSizePolicy.Minimum)
123 |
124 | self.horizontalLayout_3.addItem(self.horizontalSpacer_8)
125 |
126 | self.m_returnButton = QPushButton(ReaderLoginWidget)
127 | self.m_returnButton.setObjectName(u"m_returnButton")
128 |
129 | self.horizontalLayout_3.addWidget(self.m_returnButton)
130 |
131 | self.horizontalSpacer_5 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
132 |
133 | self.horizontalLayout_3.addItem(self.horizontalSpacer_5)
134 |
135 |
136 | self.verticalLayout.addLayout(self.horizontalLayout_3)
137 |
138 | self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
139 |
140 | self.verticalLayout.addItem(self.verticalSpacer)
141 |
142 |
143 | self.retranslateUi(ReaderLoginWidget)
144 |
145 | QMetaObject.connectSlotsByName(ReaderLoginWidget)
146 | # setupUi
147 |
148 | def retranslateUi(self, ReaderLoginWidget):
149 | ReaderLoginWidget.setWindowTitle(QCoreApplication.translate("ReaderLoginWidget", u"Form", None))
150 | self.label_3.setText(QCoreApplication.translate("ReaderLoginWidget", u"\u8bfb\u8005\u767b\u5f55", None))
151 | self.label.setText(QCoreApplication.translate("ReaderLoginWidget", u"\u59d3\u540d\uff1a", None))
152 | self.m_accountLineEdit.setText("")
153 | self.label_2.setText(QCoreApplication.translate("ReaderLoginWidget", u"\u5bc6\u7801\uff1a", None))
154 | self.m_passwordLineEdit.setText("")
155 | self.m_loginButton.setText(QCoreApplication.translate("ReaderLoginWidget", u"\u767b\u5f55", None))
156 | self.m_registerButton.setText(QCoreApplication.translate("ReaderLoginWidget", u"\u6ce8\u518c", None))
157 | self.m_returnButton.setText(QCoreApplication.translate("ReaderLoginWidget", u"\u8fd4\u56de", None))
158 | # retranslateUi
159 |
160 |
--------------------------------------------------------------------------------
/widget/ui_registerwidget.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | ################################################################################
4 | ## Form generated from reading UI file 'registerwidget.ui'
5 | ##
6 | ## Created by: Qt User Interface Compiler version 6.5.1
7 | ##
8 | ## WARNING! All changes made in this file will be lost when recompiling UI file!
9 | ################################################################################
10 |
11 | from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
12 | QMetaObject, QObject, QPoint, QRect,
13 | QSize, QTime, QUrl, Qt)
14 | from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
15 | QFont, QFontDatabase, QGradient, QIcon,
16 | QImage, QKeySequence, QLinearGradient, QPainter,
17 | QPalette, QPixmap, QRadialGradient, QTransform)
18 | from PySide6.QtWidgets import (QApplication, QComboBox, QHBoxLayout, QLabel,
19 | QLineEdit, QPushButton, QSizePolicy, QSpacerItem,
20 | QVBoxLayout, QWidget)
21 |
22 | class Ui_RegisterWidget(object):
23 | def setupUi(self, RegisterWidget):
24 | if not RegisterWidget.objectName():
25 | RegisterWidget.setObjectName(u"RegisterWidget")
26 | RegisterWidget.resize(708, 429)
27 | self.verticalLayout = QVBoxLayout(RegisterWidget)
28 | self.verticalLayout.setObjectName(u"verticalLayout")
29 | self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
30 |
31 | self.verticalLayout.addItem(self.verticalSpacer)
32 |
33 | self.horizontalLayout = QHBoxLayout()
34 | self.horizontalLayout.setObjectName(u"horizontalLayout")
35 | self.horizontalSpacer = QSpacerItem(200, 20, QSizePolicy.Fixed, QSizePolicy.Minimum)
36 |
37 | self.horizontalLayout.addItem(self.horizontalSpacer)
38 |
39 | self.label = QLabel(RegisterWidget)
40 | self.label.setObjectName(u"label")
41 |
42 | self.horizontalLayout.addWidget(self.label)
43 |
44 | self.horizontalSpacer_15 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
45 |
46 | self.horizontalLayout.addItem(self.horizontalSpacer_15)
47 |
48 | self.m_nameLlineEdit = QLineEdit(RegisterWidget)
49 | self.m_nameLlineEdit.setObjectName(u"m_nameLlineEdit")
50 |
51 | self.horizontalLayout.addWidget(self.m_nameLlineEdit)
52 |
53 | self.horizontalSpacer_14 = QSpacerItem(200, 20, QSizePolicy.Fixed, QSizePolicy.Minimum)
54 |
55 | self.horizontalLayout.addItem(self.horizontalSpacer_14)
56 |
57 |
58 | self.verticalLayout.addLayout(self.horizontalLayout)
59 |
60 | self.verticalSpacer_3 = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
61 |
62 | self.verticalLayout.addItem(self.verticalSpacer_3)
63 |
64 | self.horizontalLayout_2 = QHBoxLayout()
65 | self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
66 | self.horizontalSpacer_2 = QSpacerItem(200, 20, QSizePolicy.Fixed, QSizePolicy.Minimum)
67 |
68 | self.horizontalLayout_2.addItem(self.horizontalSpacer_2)
69 |
70 | self.label_2 = QLabel(RegisterWidget)
71 | self.label_2.setObjectName(u"label_2")
72 |
73 | self.horizontalLayout_2.addWidget(self.label_2)
74 |
75 | self.horizontalSpacer_16 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
76 |
77 | self.horizontalLayout_2.addItem(self.horizontalSpacer_16)
78 |
79 | self.m_genderComboBox = QComboBox(RegisterWidget)
80 | self.m_genderComboBox.addItem("")
81 | self.m_genderComboBox.addItem("")
82 | self.m_genderComboBox.setObjectName(u"m_genderComboBox")
83 | sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
84 | sizePolicy.setHorizontalStretch(0)
85 | sizePolicy.setVerticalStretch(0)
86 | sizePolicy.setHeightForWidth(self.m_genderComboBox.sizePolicy().hasHeightForWidth())
87 | self.m_genderComboBox.setSizePolicy(sizePolicy)
88 |
89 | self.horizontalLayout_2.addWidget(self.m_genderComboBox)
90 |
91 | self.horizontalSpacer_12 = QSpacerItem(200, 20, QSizePolicy.Fixed, QSizePolicy.Minimum)
92 |
93 | self.horizontalLayout_2.addItem(self.horizontalSpacer_12)
94 |
95 |
96 | self.verticalLayout.addLayout(self.horizontalLayout_2)
97 |
98 | self.verticalSpacer_4 = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
99 |
100 | self.verticalLayout.addItem(self.verticalSpacer_4)
101 |
102 | self.horizontalLayout_3 = QHBoxLayout()
103 | self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
104 | self.horizontalSpacer_3 = QSpacerItem(200, 20, QSizePolicy.Fixed, QSizePolicy.Minimum)
105 |
106 | self.horizontalLayout_3.addItem(self.horizontalSpacer_3)
107 |
108 | self.label_3 = QLabel(RegisterWidget)
109 | self.label_3.setObjectName(u"label_3")
110 |
111 | self.horizontalLayout_3.addWidget(self.label_3)
112 |
113 | self.horizontalSpacer_17 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
114 |
115 | self.horizontalLayout_3.addItem(self.horizontalSpacer_17)
116 |
117 | self.m_mobileLineEdit = QLineEdit(RegisterWidget)
118 | self.m_mobileLineEdit.setObjectName(u"m_mobileLineEdit")
119 |
120 | self.horizontalLayout_3.addWidget(self.m_mobileLineEdit)
121 |
122 | self.horizontalSpacer_10 = QSpacerItem(200, 20, QSizePolicy.Fixed, QSizePolicy.Minimum)
123 |
124 | self.horizontalLayout_3.addItem(self.horizontalSpacer_10)
125 |
126 |
127 | self.verticalLayout.addLayout(self.horizontalLayout_3)
128 |
129 | self.verticalSpacer_5 = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
130 |
131 | self.verticalLayout.addItem(self.verticalSpacer_5)
132 |
133 | self.horizontalLayout_4 = QHBoxLayout()
134 | self.horizontalLayout_4.setObjectName(u"horizontalLayout_4")
135 | self.horizontalSpacer_4 = QSpacerItem(200, 20, QSizePolicy.Fixed, QSizePolicy.Minimum)
136 |
137 | self.horizontalLayout_4.addItem(self.horizontalSpacer_4)
138 |
139 | self.label_4 = QLabel(RegisterWidget)
140 | self.label_4.setObjectName(u"label_4")
141 |
142 | self.horizontalLayout_4.addWidget(self.label_4)
143 |
144 | self.horizontalSpacer_18 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
145 |
146 | self.horizontalLayout_4.addItem(self.horizontalSpacer_18)
147 |
148 | self.m_unitLineEdit = QLineEdit(RegisterWidget)
149 | self.m_unitLineEdit.setObjectName(u"m_unitLineEdit")
150 |
151 | self.horizontalLayout_4.addWidget(self.m_unitLineEdit)
152 |
153 | self.horizontalSpacer_11 = QSpacerItem(200, 20, QSizePolicy.Fixed, QSizePolicy.Minimum)
154 |
155 | self.horizontalLayout_4.addItem(self.horizontalSpacer_11)
156 |
157 |
158 | self.verticalLayout.addLayout(self.horizontalLayout_4)
159 |
160 | self.verticalSpacer_6 = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
161 |
162 | self.verticalLayout.addItem(self.verticalSpacer_6)
163 |
164 | self.horizontalLayout_5 = QHBoxLayout()
165 | self.horizontalLayout_5.setObjectName(u"horizontalLayout_5")
166 | self.horizontalSpacer_9 = QSpacerItem(200, 20, QSizePolicy.Fixed, QSizePolicy.Minimum)
167 |
168 | self.horizontalLayout_5.addItem(self.horizontalSpacer_9)
169 |
170 | self.label_5 = QLabel(RegisterWidget)
171 | self.label_5.setObjectName(u"label_5")
172 |
173 | self.horizontalLayout_5.addWidget(self.label_5)
174 |
175 | self.horizontalSpacer_19 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
176 |
177 | self.horizontalLayout_5.addItem(self.horizontalSpacer_19)
178 |
179 | self.m_roleComboBox = QComboBox(RegisterWidget)
180 | self.m_roleComboBox.addItem("")
181 | self.m_roleComboBox.addItem("")
182 | self.m_roleComboBox.addItem("")
183 | self.m_roleComboBox.addItem("")
184 | self.m_roleComboBox.setObjectName(u"m_roleComboBox")
185 | sizePolicy.setHeightForWidth(self.m_roleComboBox.sizePolicy().hasHeightForWidth())
186 | self.m_roleComboBox.setSizePolicy(sizePolicy)
187 |
188 | self.horizontalLayout_5.addWidget(self.m_roleComboBox)
189 |
190 | self.horizontalSpacer_5 = QSpacerItem(200, 20, QSizePolicy.Fixed, QSizePolicy.Minimum)
191 |
192 | self.horizontalLayout_5.addItem(self.horizontalSpacer_5)
193 |
194 |
195 | self.verticalLayout.addLayout(self.horizontalLayout_5)
196 |
197 | self.verticalSpacer_7 = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
198 |
199 | self.verticalLayout.addItem(self.verticalSpacer_7)
200 |
201 | self.horizontalLayout_6 = QHBoxLayout()
202 | self.horizontalLayout_6.setObjectName(u"horizontalLayout_6")
203 | self.horizontalSpacer_8 = QSpacerItem(200, 20, QSizePolicy.Fixed, QSizePolicy.Minimum)
204 |
205 | self.horizontalLayout_6.addItem(self.horizontalSpacer_8)
206 |
207 | self.label_6 = QLabel(RegisterWidget)
208 | self.label_6.setObjectName(u"label_6")
209 |
210 | self.horizontalLayout_6.addWidget(self.label_6)
211 |
212 | self.horizontalSpacer_20 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
213 |
214 | self.horizontalLayout_6.addItem(self.horizontalSpacer_20)
215 |
216 | self.m_passwordLineEdit = QLineEdit(RegisterWidget)
217 | self.m_passwordLineEdit.setObjectName(u"m_passwordLineEdit")
218 | self.m_passwordLineEdit.setEchoMode(QLineEdit.Password)
219 |
220 | self.horizontalLayout_6.addWidget(self.m_passwordLineEdit)
221 |
222 | self.horizontalSpacer_6 = QSpacerItem(200, 20, QSizePolicy.Fixed, QSizePolicy.Minimum)
223 |
224 | self.horizontalLayout_6.addItem(self.horizontalSpacer_6)
225 |
226 |
227 | self.verticalLayout.addLayout(self.horizontalLayout_6)
228 |
229 | self.verticalSpacer_8 = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
230 |
231 | self.verticalLayout.addItem(self.verticalSpacer_8)
232 |
233 | self.horizontalLayout_7 = QHBoxLayout()
234 | self.horizontalLayout_7.setObjectName(u"horizontalLayout_7")
235 | self.horizontalSpacer_7 = QSpacerItem(200, 20, QSizePolicy.Fixed, QSizePolicy.Minimum)
236 |
237 | self.horizontalLayout_7.addItem(self.horizontalSpacer_7)
238 |
239 | self.label_7 = QLabel(RegisterWidget)
240 | self.label_7.setObjectName(u"label_7")
241 |
242 | self.horizontalLayout_7.addWidget(self.label_7)
243 |
244 | self.horizontalSpacer_21 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
245 |
246 | self.horizontalLayout_7.addItem(self.horizontalSpacer_21)
247 |
248 | self.m_passwordConfirmLineEdit = QLineEdit(RegisterWidget)
249 | self.m_passwordConfirmLineEdit.setObjectName(u"m_passwordConfirmLineEdit")
250 | self.m_passwordConfirmLineEdit.setEchoMode(QLineEdit.Password)
251 |
252 | self.horizontalLayout_7.addWidget(self.m_passwordConfirmLineEdit)
253 |
254 | self.horizontalSpacer_13 = QSpacerItem(200, 20, QSizePolicy.Fixed, QSizePolicy.Minimum)
255 |
256 | self.horizontalLayout_7.addItem(self.horizontalSpacer_13)
257 |
258 |
259 | self.verticalLayout.addLayout(self.horizontalLayout_7)
260 |
261 | self.verticalSpacer_9 = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
262 |
263 | self.verticalLayout.addItem(self.verticalSpacer_9)
264 |
265 | self.horizontalLayout_8 = QHBoxLayout()
266 | self.horizontalLayout_8.setObjectName(u"horizontalLayout_8")
267 | self.horizontalSpacer_22 = QSpacerItem(200, 20, QSizePolicy.Fixed, QSizePolicy.Minimum)
268 |
269 | self.horizontalLayout_8.addItem(self.horizontalSpacer_22)
270 |
271 | self.m_registerButton = QPushButton(RegisterWidget)
272 | self.m_registerButton.setObjectName(u"m_registerButton")
273 |
274 | self.horizontalLayout_8.addWidget(self.m_registerButton)
275 |
276 | self.horizontalSpacer_24 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
277 |
278 | self.horizontalLayout_8.addItem(self.horizontalSpacer_24)
279 |
280 | self.m_returnButton = QPushButton(RegisterWidget)
281 | self.m_returnButton.setObjectName(u"m_returnButton")
282 |
283 | self.horizontalLayout_8.addWidget(self.m_returnButton)
284 |
285 | self.horizontalSpacer_23 = QSpacerItem(200, 20, QSizePolicy.Fixed, QSizePolicy.Minimum)
286 |
287 | self.horizontalLayout_8.addItem(self.horizontalSpacer_23)
288 |
289 |
290 | self.verticalLayout.addLayout(self.horizontalLayout_8)
291 |
292 | self.verticalSpacer_2 = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
293 |
294 | self.verticalLayout.addItem(self.verticalSpacer_2)
295 |
296 |
297 | self.retranslateUi(RegisterWidget)
298 |
299 | QMetaObject.connectSlotsByName(RegisterWidget)
300 | # setupUi
301 |
302 | def retranslateUi(self, RegisterWidget):
303 | RegisterWidget.setWindowTitle(QCoreApplication.translate("RegisterWidget", u"Form", None))
304 | self.label.setText(QCoreApplication.translate("RegisterWidget", u"\u59d3\u540d\uff1a", None))
305 | self.label_2.setText(QCoreApplication.translate("RegisterWidget", u"\u6027\u522b\uff1a", None))
306 | self.m_genderComboBox.setItemText(0, QCoreApplication.translate("RegisterWidget", u"\u7537", None))
307 | self.m_genderComboBox.setItemText(1, QCoreApplication.translate("RegisterWidget", u"\u5973", None))
308 |
309 | self.label_3.setText(QCoreApplication.translate("RegisterWidget", u"\u624b\u673a\u53f7\uff1a", None))
310 | self.label_4.setText(QCoreApplication.translate("RegisterWidget", u"\u5355\u4f4d\uff1a", None))
311 | self.label_5.setText(QCoreApplication.translate("RegisterWidget", u"\u7c7b\u522b\uff1a", None))
312 | self.m_roleComboBox.setItemText(0, QCoreApplication.translate("RegisterWidget", u"\u6559\u5e08", None))
313 | self.m_roleComboBox.setItemText(1, QCoreApplication.translate("RegisterWidget", u"\u7814\u7a76\u751f", None))
314 | self.m_roleComboBox.setItemText(2, QCoreApplication.translate("RegisterWidget", u"\u672c\u79d1\u751f", None))
315 | self.m_roleComboBox.setItemText(3, QCoreApplication.translate("RegisterWidget", u"\u5176\u4ed6", None))
316 |
317 | self.label_6.setText(QCoreApplication.translate("RegisterWidget", u"\u5bc6\u7801\uff1a", None))
318 | self.label_7.setText(QCoreApplication.translate("RegisterWidget", u"\u786e\u8ba4\u5bc6\u7801\uff1a", None))
319 | self.m_registerButton.setText(QCoreApplication.translate("RegisterWidget", u"\u6ce8\u518c", None))
320 | self.m_returnButton.setText(QCoreApplication.translate("RegisterWidget", u"\u8fd4\u56de", None))
321 | # retranslateUi
322 |
323 |
--------------------------------------------------------------------------------
/数据库实验作业要求.docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hwdqm88/SDU_sql_experiment_bookdb/2eff4a5b5bc26ea630ff5d8f1781ab161951d218/数据库实验作业要求.docx
--------------------------------------------------------------------------------