【数据库实验】《小型MIS的开发》PyQt5 开发 民航票务管理系统 您所在的位置:网站首页 小型数据库系统包括什么 【数据库实验】《小型MIS的开发》PyQt5 开发 民航票务管理系统

【数据库实验】《小型MIS的开发》PyQt5 开发 民航票务管理系统

2024-06-03 16:22| 来源: 网络整理| 查看: 265

PyQt5 开发 民航票务管理系统 为什么要拿 Python 做呢?学习一天的知识点开发环境 与 项目整体结构数据库建表用户表的 SQL航班信息表的 SQL 界面代码主界面:hello.py登录界面:login.py操作界面:operate.py 逻辑代码 app.py项目演示

这份 Java 是我的实验的:《小型MIS的开发》— Spring + Mybatis + JavaFx 开发 民航票务管理系统

下面这份 Python 版是帮女朋友写的!

为什么要拿 Python 做呢?

这两天正好在下大雨,昨天我把自己的软件 + 报告写完后,准备开始帮女朋友写,原本打算在我的代码的基础上改改 UI 和 逻辑什么的,就可以搞定了;这是原计划,毕竟用 JavaFx 开发确实是效率高啊!

但是昨天的大雨让我没法去自习室。。。我的考研相关的书都在自习室,既然只能呆在宿舍。。那不如学点新东西把,于是我选择了 Python + Qt 制作图形化界面,就当增加一下自己的技术栈。。

学习一天的知识点

如果是真心的想学习一下的话,可以看看这几篇文章,这些是我将这个项目要用到的知识点模块化记录了一下:

首先是 PyQt5 的 安装 与 入门教程:【PyQt5】PyQt5 安装 以及使用 designer 开发 python GUI 界面

然后是安装时可能遇到的问题:PyQt5: This application failed to start because it could not find or load the Qt platform plugin

完成上面的 安装 与 入门 以后可以正式开始写我们这个项目了; 然后需要了解的是 页面跳转 相关的知识:【PyQt5】designer 页面点击按钮跳转页面

了解这个以后,就可以完整的搭建出一个完整的 包含点击按钮进行跳转的 界面了;但是此时界面上是没有数据的,因此下一步需要学习的是 Python 连接数据库 相关知识:【PyQt5】PyMySQL 连接 MySQL数据库

学会与数据库打交道以后,我们只要再学一个 PyQt5 的组件——tableWidget 就可以完成我们这次实验了:【PyQt5】连接 mysql 查询数据 并显示在 tableWidget 表格

以上是如果你想靠自己的实力完成这次实验需要掌握的知识点。

开发环境 与 项目整体结构

我的开发环境是:

PyQt 5Python 3.8VsCodeMySQL 5.7

项目整体结构: 在这里插入图片描述 ui 目录下存放 .ui 文件,这个是由 qt designer 设计出来的界面文件,我们可以通过 pyuic5 将它们转化为 Python 代码,所以 hello.ui —> hello.py、login.ui —> login.py、operate.ui —> operate.py,一一对应。

顺带一提,代码的编译运行 是不需要 .ui 文件的,只有当你想要修改界面时候,才会去动他。

至于 app.py,那就是我们的核心逻辑文件了,如果想要看懂这里的东西就需要去学习上面列出的知识点啦!

数据库建表

需要两张表:

用户表 user航班信息表 flight

命令行登录 MySQL:

mysql -u root -p > 输入密码: 1234

建立一个数据库:sxn210224,并进入:

CREATE DATABASE sxn210224; USE sxn210224;

下面开始建表:

用户表的 SQL SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for user -- ---------------------------- DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `u_id` varchar(8) NOT NULL, `u_username` varchar(50) DEFAULT NULL, `u_password` varchar(50) DEFAULT NULL, PRIMARY KEY (`u_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of user -- ---------------------------- INSERT INTO `user` VALUES ('17210224', 'luzhenyu', '123456'); INSERT INTO `user` VALUES ('17210309', 'hanlei', '123456'); 航班信息表的 SQL SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for flight -- ---------------------------- DROP TABLE IF EXISTS `flight`; CREATE TABLE `flight` ( `f_id` char(8) NOT NULL, `f_src` varchar(15) DEFAULT NULL, `f_des` varchar(15) DEFAULT NULL, `f_date` date NOT NULL, `f_start_time` char(6) DEFAULT NULL, `f_end_time` char(6) DEFAULT NULL, `f_remain_seats` int(4) DEFAULT NULL, `f_fares` float(8,0) DEFAULT NULL, `f_discount_nums` float(8,0) DEFAULT NULL, `f_discount` float(8,0) DEFAULT NULL, `f_subordinate_company` varchar(20) DEFAULT NULL, PRIMARY KEY (`f_id`,`f_date`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of flight -- ---------------------------- INSERT INTO `flight` VALUES ('F001', '扬州', '苏州', '2012-12-12', '15:30', '14:20', '5', '99', '5', '1', '振宇有限公司'); INSERT INTO `flight` VALUES ('F002', '扬州', '苏州', '2012-12-13', '12:20', '15:50', '20', '99', '5', '1', '振宇有限公司'); INSERT INTO `flight` VALUES ('F003', '扬州', '北京', '2012-12-13', '12:20', '17:50', '4', '99', '5', '1', '振宇有限公司'); INSERT INTO `flight` VALUES ('F004', '扬州', '泰国', '2012-12-13', '7:20', '8:50', '2', '99', '5', '1', '振宇有限公司'); INSERT INTO `flight` VALUES ('F005', '扬州', '广州', '2012-12-14', '5:20', '14:50', '40', '99', '5', '1', '振宇有限公司'); 界面代码

注意,我们的界面都是通过 Qt designer 拖拽制作的 .ui 文件,再通过 pyuic5 工具转为 .py 文件

简单起见,总共就只有三个界面文件:

主界面 hello.py登陆界面 login.py操作界面 operate.py 主界面:hello.py from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(510, 300) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.gridLayout_3 = QtWidgets.QGridLayout(self.centralwidget) self.gridLayout_3.setObjectName("gridLayout_3") self.gridLayout_2 = QtWidgets.QGridLayout() self.gridLayout_2.setObjectName("gridLayout_2") self.label = QtWidgets.QLabel(self.centralwidget) font = QtGui.QFont() font.setPointSize(22) self.label.setFont(font) self.label.setAlignment(QtCore.Qt.AlignCenter) self.label.setObjectName("label") self.gridLayout_2.addWidget(self.label, 0, 0, 1, 1) self.gridLayout = QtWidgets.QGridLayout() self.gridLayout.setContentsMargins(-1, -1, -1, 15) self.gridLayout.setHorizontalSpacing(10) self.gridLayout.setVerticalSpacing(15) self.gridLayout.setObjectName("gridLayout") self.queryButton = QtWidgets.QPushButton(self.centralwidget) self.queryButton.setMinimumSize(QtCore.QSize(250, 40)) self.queryButton.setMaximumSize(QtCore.QSize(250, 40)) self.queryButton.setObjectName("queryButton") self.gridLayout.addWidget(self.queryButton, 1, 0, 1, 1) self.manageButton = QtWidgets.QPushButton(self.centralwidget) self.manageButton.setMinimumSize(QtCore.QSize(250, 40)) self.manageButton.setMaximumSize(QtCore.QSize(250, 40)) self.manageButton.setObjectName("manageButton") self.gridLayout.addWidget(self.manageButton, 0, 0, 1, 1) self.gridLayout_2.addLayout(self.gridLayout, 1, 0, 1, 1) self.gridLayout_3.addLayout(self.gridLayout_2, 0, 0, 1, 1) MainWindow.setCentralWidget(self.centralwidget) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "主界面")) self.label.setText(_translate("MainWindow", "欢迎使用票务管理系统")) self.queryButton.setText(_translate("MainWindow", "票务查询")) self.manageButton.setText(_translate("MainWindow", "票务管理")) 登录界面:login.py from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(510, 290) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.gridLayout_2 = QtWidgets.QGridLayout(self.centralwidget) self.gridLayout_2.setObjectName("gridLayout_2") self.label = QtWidgets.QLabel(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth()) self.label.setSizePolicy(sizePolicy) font = QtGui.QFont() font.setPointSize(25) self.label.setFont(font) self.label.setAlignment(QtCore.Qt.AlignCenter) self.label.setObjectName("label") self.gridLayout_2.addWidget(self.label, 0, 0, 1, 1) self.gridLayout = QtWidgets.QGridLayout() self.gridLayout.setContentsMargins(-1, -1, -1, 15) self.gridLayout.setSpacing(20) self.gridLayout.setObjectName("gridLayout") self.label_2 = QtWidgets.QLabel(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.label_2.sizePolicy().hasHeightForWidth()) self.label_2.setSizePolicy(sizePolicy) font = QtGui.QFont() font.setPointSize(12) self.label_2.setFont(font) self.label_2.setObjectName("label_2") self.gridLayout.addWidget(self.label_2, 0, 0, 1, 1) self.userText = QtWidgets.QLineEdit(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.userText.sizePolicy().hasHeightForWidth()) self.userText.setSizePolicy(sizePolicy) font = QtGui.QFont() font.setPointSize(12) self.userText.setFont(font) self.userText.setAlignment(QtCore.Qt.AlignCenter) self.userText.setObjectName("userText") self.gridLayout.addWidget(self.userText, 0, 1, 1, 1) self.label_3 = QtWidgets.QLabel(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.label_3.sizePolicy().hasHeightForWidth()) self.label_3.setSizePolicy(sizePolicy) font = QtGui.QFont() font.setPointSize(12) self.label_3.setFont(font) self.label_3.setObjectName("label_3") self.gridLayout.addWidget(self.label_3, 1, 0, 1, 1) self.pwdText = QtWidgets.QLineEdit(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.pwdText.sizePolicy().hasHeightForWidth()) self.pwdText.setSizePolicy(sizePolicy) font = QtGui.QFont() font.setPointSize(12) self.pwdText.setFont(font) self.pwdText.setAlignment(QtCore.Qt.AlignCenter) self.pwdText.setObjectName("pwdText") self.gridLayout.addWidget(self.pwdText, 1, 1, 1, 1) self.gridLayout_2.addLayout(self.gridLayout, 1, 0, 1, 1) self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout.setContentsMargins(-1, -1, -1, 12) self.horizontalLayout.setSpacing(20) self.horizontalLayout.setObjectName("horizontalLayout") self.okButton = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.okButton.sizePolicy().hasHeightForWidth()) self.okButton.setSizePolicy(sizePolicy) font = QtGui.QFont() font.setPointSize(12) self.okButton.setFont(font) self.okButton.setObjectName("okButton") self.horizontalLayout.addWidget(self.okButton) self.cancelButton = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.cancelButton.sizePolicy().hasHeightForWidth()) self.cancelButton.setSizePolicy(sizePolicy) font = QtGui.QFont() font.setPointSize(12) self.cancelButton.setFont(font) self.cancelButton.setObjectName("cancelButton") self.horizontalLayout.addWidget(self.cancelButton) self.gridLayout_2.addLayout(self.horizontalLayout, 2, 0, 1, 1) MainWindow.setCentralWidget(self.centralwidget) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", " 登陆界面")) self.label.setText(_translate("MainWindow", "请输入用户信息")) self.label_2.setText(_translate("MainWindow", "用户名")) self.label_3.setText(_translate("MainWindow", "密码")) self.okButton.setText(_translate("MainWindow", "确定")) self.cancelButton.setText(_translate("MainWindow", "取消")) 操作界面:operate.py from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(750, 460) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.tableWidget = QtWidgets.QTableWidget(self.centralwidget) self.tableWidget.setGeometry(QtCore.QRect(0, 90, 731, 161)) self.tableWidget.setObjectName("tableWidget") self.tableWidget.setColumnCount(11) self.tableWidget.setRowCount(9) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(0, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(1, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(2, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(3, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(4, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(5, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(6, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(7, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(8, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(0, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(1, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(2, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(3, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(4, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(5, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(6, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(7, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(8, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(9, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(10, item) self.layoutWidget = QtWidgets.QWidget(self.centralwidget) self.layoutWidget.setGeometry(QtCore.QRect(100, 380, 208, 35)) self.layoutWidget.setObjectName("layoutWidget") self.horizontalLayout = QtWidgets.QHBoxLayout(self.layoutWidget) self.horizontalLayout.setContentsMargins(0, 0, 0, 0) self.horizontalLayout.setSpacing(20) self.horizontalLayout.setObjectName("horizontalLayout") self.pushButton = QtWidgets.QPushButton(self.layoutWidget) font = QtGui.QFont() font.setPointSize(13) self.pushButton.setFont(font) self.pushButton.setObjectName("pushButton") self.horizontalLayout.addWidget(self.pushButton) self.exitButton = QtWidgets.QPushButton(self.layoutWidget) font = QtGui.QFont() font.setPointSize(13) self.exitButton.setFont(font) self.exitButton.setObjectName("exitButton") self.horizontalLayout.addWidget(self.exitButton) self.layoutWidget1 = QtWidgets.QWidget(self.centralwidget) self.layoutWidget1.setGeometry(QtCore.QRect(50, 290, 241, 74)) self.layoutWidget1.setObjectName("layoutWidget1") self.verticalLayout = QtWidgets.QVBoxLayout(self.layoutWidget1) self.verticalLayout.setContentsMargins(0, 0, 0, 0) self.verticalLayout.setObjectName("verticalLayout") self.horizontalLayout_3 = QtWidgets.QHBoxLayout() self.horizontalLayout_3.setSpacing(20) self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.label = QtWidgets.QLabel(self.layoutWidget1) font = QtGui.QFont() font.setPointSize(15) self.label.setFont(font) self.label.setObjectName("label") self.horizontalLayout_3.addWidget(self.label) self.lineEdit = QtWidgets.QLineEdit(self.layoutWidget1) font = QtGui.QFont() font.setPointSize(15) self.lineEdit.setFont(font) self.lineEdit.setObjectName("lineEdit") self.horizontalLayout_3.addWidget(self.lineEdit) self.verticalLayout.addLayout(self.horizontalLayout_3) self.horizontalLayout_2 = QtWidgets.QHBoxLayout() self.horizontalLayout_2.setSpacing(20) self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.label_2 = QtWidgets.QLabel(self.layoutWidget1) font = QtGui.QFont() font.setPointSize(15) self.label_2.setFont(font) self.label_2.setObjectName("label_2") self.horizontalLayout_2.addWidget(self.label_2) self.dateEdit = QtWidgets.QDateEdit(self.layoutWidget1) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.dateEdit.sizePolicy().hasHeightForWidth()) self.dateEdit.setSizePolicy(sizePolicy) font = QtGui.QFont() font.setPointSize(13) self.dateEdit.setFont(font) self.dateEdit.setObjectName("dateEdit") self.horizontalLayout_2.addWidget(self.dateEdit) self.verticalLayout.addLayout(self.horizontalLayout_2) self.layoutWidget2 = QtWidgets.QWidget(self.centralwidget) self.layoutWidget2.setGeometry(QtCore.QRect(200, 40, 321, 41)) self.layoutWidget2.setObjectName("layoutWidget2") self.horizontalLayout_4 = QtWidgets.QHBoxLayout(self.layoutWidget2) self.horizontalLayout_4.setContentsMargins(0, 0, 0, 0) self.horizontalLayout_4.setSpacing(20) self.horizontalLayout_4.setObjectName("horizontalLayout_4") self.pushButton_3 = QtWidgets.QPushButton(self.layoutWidget2) self.pushButton_3.setObjectName("pushButton_3") self.horizontalLayout_4.addWidget(self.pushButton_3) self.pushButton_4 = QtWidgets.QPushButton(self.layoutWidget2) self.pushButton_4.setObjectName("pushButton_4") self.horizontalLayout_4.addWidget(self.pushButton_4) self.pushButton_5 = QtWidgets.QPushButton(self.layoutWidget2) self.pushButton_5.setObjectName("pushButton_5") self.horizontalLayout_4.addWidget(self.pushButton_5) MainWindow.setCentralWidget(self.centralwidget) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "操作界面")) item = self.tableWidget.verticalHeaderItem(0) item.setText(_translate("MainWindow", "1")) item = self.tableWidget.verticalHeaderItem(1) item.setText(_translate("MainWindow", "2")) item = self.tableWidget.verticalHeaderItem(2) item.setText(_translate("MainWindow", "3")) item = self.tableWidget.verticalHeaderItem(3) item.setText(_translate("MainWindow", "4")) item = self.tableWidget.verticalHeaderItem(4) item.setText(_translate("MainWindow", "5")) item = self.tableWidget.verticalHeaderItem(5) item.setText(_translate("MainWindow", "6")) item = self.tableWidget.verticalHeaderItem(6) item.setText(_translate("MainWindow", "7")) item = self.tableWidget.verticalHeaderItem(7) item.setText(_translate("MainWindow", "8")) item = self.tableWidget.verticalHeaderItem(8) item.setText(_translate("MainWindow", "9")) item = self.tableWidget.horizontalHeaderItem(0) item.setText(_translate("MainWindow", "航班号")) item = self.tableWidget.horizontalHeaderItem(1) item.setText(_translate("MainWindow", "起点")) item = self.tableWidget.horizontalHeaderItem(2) item.setText(_translate("MainWindow", "终点")) item = self.tableWidget.horizontalHeaderItem(3) item.setText(_translate("MainWindow", "日期")) item = self.tableWidget.horizontalHeaderItem(4) item.setText(_translate("MainWindow", "起飞时刻")) item = self.tableWidget.horizontalHeaderItem(5) item.setText(_translate("MainWindow", "到达时刻")) item = self.tableWidget.horizontalHeaderItem(6) item.setText(_translate("MainWindow", "票价")) item = self.tableWidget.horizontalHeaderItem(7) item.setText(_translate("MainWindow", "折扣票数")) item = self.tableWidget.horizontalHeaderItem(8) item.setText(_translate("MainWindow", "剩余座位数")) item = self.tableWidget.horizontalHeaderItem(9) item.setText(_translate("MainWindow", "折扣率")) item = self.tableWidget.horizontalHeaderItem(10) item.setText(_translate("MainWindow", "航班所属航空公司")) self.pushButton.setText(_translate("MainWindow", "查询")) self.exitButton.setText(_translate("MainWindow", "退出")) self.label.setText(_translate("MainWindow", "航班号")) self.label_2.setText(_translate("MainWindow", "日期")) self.pushButton_3.setText(_translate("MainWindow", "增加")) self.pushButton_4.setText(_translate("MainWindow", "修改")) self.pushButton_5.setText(_translate("MainWindow", "删除")) 逻辑代码 app.py

在这里插入图片描述 将以上的界面代码 与 下面的逻辑代码放在一个文件下就可以运行啦!(需要 PyQt 环境) 环境安装可以看这个:【PyQt5】PyQt5 安装 以及使用 designer 开发 python GUI 界面

import sys from PyQt5 import QtCore, QtWidgets, QtCore import pymysql from hello import Ui_MainWindow as Hello_Ui from login import Ui_MainWindow as Login_Ui from operate import Ui_MainWindow as Operate_Ui # 主窗口 class HelloWindow(QtWidgets.QMainWindow, Hello_Ui): switch_window1 = QtCore.pyqtSignal() switch_window2 = QtCore.pyqtSignal() def __init__(self): super(HelloWindow, self).__init__() self.setupUi(self) self.queryButton.clicked.connect(self.goOperate) self.manageButton.clicked.connect(self.goLogin) def goLogin(self): self.switch_window1.emit() def goOperate(self): self.switch_window2.emit() # 登录窗口 class LoginWindow(QtWidgets.QMainWindow, Login_Ui): switch_window1 = QtCore.pyqtSignal() switch_window2 = QtCore.pyqtSignal() def __init__(self): super(LoginWindow, self).__init__() self.setupUi(self) self.okButton.clicked.connect(self.ok) self.cancelButton.clicked.connect(self.cancel) def ok(self): username = self.userText.text() password = self.pwdText.text() # 创建数据库连接 conn = pymysql.connect( host = '127.0.0.1', # 连接主机, 默认127.0.0.1 user = 'root', # 用户名 passwd = '1234', # 密码 port = 3306, # 端口,默认为3306 db = 'sxn210224', # 数据库名称 charset = 'utf8' # 字符编码 ) # 生成游标对象 cursor cursor = conn.cursor() if (cursor.execute("SELECT * FROM user WHERE u_username='%s' AND u_password='%s'" %(username, password))): self.switch_window1.emit() else: print("密码错误!!") cursor.close() conn.close() def cancel(self): self.switch_window2.emit() # 操作窗口 class OperateWindow(QtWidgets.QMainWindow, Operate_Ui): def __init__(self): super(OperateWindow, self).__init__() self.setupUi(self) self.exitButton.clicked.connect(self.exit) # 数据库连接对象 conn = pymysql.connect(host='localhost', port=3306, user='root', password="1234", db="sxn210224") # 游标对象 cur = conn.cursor() # 查询的sql语句 sql = "SELECT * FROM flight" cur.execute(sql) # 获取查询到的数据, 是以二维元组的形式存储的, 所以读取需要使用 data[i][j] 下标定位 data = cur.fetchall() # 打印测试 print(data) # 遍历二维元组, 将 id 和 name 显示到界面表格上 x = 0 for i in data: y = 0 for j in i: self.tableWidget.setItem(x, y, QtWidgets.QTableWidgetItem(str(data[x][y]))) y = y + 1 x = x + 1 cur.close() conn.close() def exit(self): sys.exit(0) # 利用一个控制器来控制页面的跳转 class Controller: def __init__(self): self.hello = HelloWindow() self.login = LoginWindow() self.operate = OperateWindow() def show_hello(self): self.hello = HelloWindow() self.hello.switch_window1.connect(self.show_login) self.hello.switch_window2.connect(self.show_operate) self.hello.show() self.login.close() self.operate.close() def show_login(self): self.login = LoginWindow() self.login.switch_window1.connect(self.show_operate) self.login.switch_window2.connect(self.show_hello) self.login.show() self.hello.close() self.operate.close() def show_operate(self): self.operate = OperateWindow() self.operate.show() self.hello.close() self.login.close() def main(): app = QtWidgets.QApplication(sys.argv) controller = Controller() controller.show_hello() sys.exit(app.exec_()) if __name__ == '__main__': main() 项目演示

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有