Python+mysql=接单管理系统

Python+mysql=接单管理系统

起因:接的单子越来越多,各种信息记录太麻烦,容易弄丢还不好统计
经过:闲得慌用python花了两个下午写了个自用的接单管理系统,复习一下pyqt5的使用
结果:就这样吧,懒得办了
思路就是本人太懒,所以直接上代码

  1. 主界面
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file '主界面.ui'
#
# Created by: PyQt5 UI code generator 5.14.1
#
# WARNING! All changes made in this file will be lost!


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.setEnabled(True)
        MainWindow.resize(981, 779)
        font = QtGui.QFont()
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        MainWindow.setFont(font)
        MainWindow.setToolTip("")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.add_order = QtWidgets.QPushButton(self.centralwidget)
        self.add_order.setGeometry(QtCore.QRect(40, 140, 93, 28))
        font = QtGui.QFont()
        font.setFamily("隶书")
        font.setPointSize(12)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        self.add_order.setFont(font)
        self.add_order.setObjectName("add_order")
        self.delete_order = QtWidgets.QPushButton(self.centralwidget)
        self.delete_order.setGeometry(QtCore.QRect(760, 170, 93, 28))
        font = QtGui.QFont()
        font.setFamily("隶书")
        font.setPointSize(12)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        self.delete_order.setFont(font)
        self.delete_order.setObjectName("delete_order")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(340, 10, 311, 71))
        font = QtGui.QFont()
        font.setFamily("华文新魏")
        font.setPointSize(29)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        self.label.setFont(font)
        self.label.setStyleSheet("color:rgb(0, 85, 255);")
        self.label.setFrameShape(QtWidgets.QFrame.NoFrame)
        self.label.setFrameShadow(QtWidgets.QFrame.Raised)
        self.label.setTextFormat(QtCore.Qt.AutoText)
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(430, 700, 161, 20))
        font = QtGui.QFont()
        font.setFamily("Franklin Gothic Demi")
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        self.label_2.setFont(font)
        self.label_2.setStyleSheet("color:rgb(25, 85, 25);")
        self.label_2.setFrameShape(QtWidgets.QFrame.NoFrame)
        self.label_2.setFrameShadow(QtWidgets.QFrame.Raised)
        self.label_2.setObjectName("label_2")
        self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
        self.tableWidget.setGeometry(QtCore.QRect(30, 220, 921, 461))
        self.tableWidget.setFrameShape(QtWidgets.QFrame.WinPanel)
        self.tableWidget.setFrameShadow(QtWidgets.QFrame.Raised)
        self.tableWidget.setLineWidth(3)
        self.tableWidget.setMidLineWidth(2)
        self.tableWidget.setDragEnabled(True)
        self.tableWidget.setObjectName("tableWidget")
        self.tableWidget.setColumnCount(8)
        self.tableWidget.setRowCount(0)
        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)
        self.line_2 = QtWidgets.QFrame(self.centralwidget)
        self.line_2.setGeometry(QtCore.QRect(20, 140, 20, 71))
        self.line_2.setFrameShape(QtWidgets.QFrame.VLine)
        self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_2.setObjectName("line_2")
        self.line_3 = QtWidgets.QFrame(self.centralwidget)
        self.line_3.setGeometry(QtCore.QRect(140, 140, 20, 71))
        self.line_3.setStyleSheet("color:rgb(235, 85, 0);")
        self.line_3.setFrameShape(QtWidgets.QFrame.VLine)
        self.line_3.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_3.setObjectName("line_3")
        self.delete_num = QtWidgets.QLineEdit(self.centralwidget)
        self.delete_num.setGeometry(QtCore.QRect(860, 170, 71, 31))
        self.delete_num.setText("")
        self.delete_num.setObjectName("delete_num")
        self.line = QtWidgets.QFrame(self.centralwidget)
        self.line.setGeometry(QtCore.QRect(30, 130, 118, 20))
        self.line.setFrameShape(QtWidgets.QFrame.HLine)
        self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line.setObjectName("line")
        self.line_4 = QtWidgets.QFrame(self.centralwidget)
        self.line_4.setGeometry(QtCore.QRect(30, 200, 118, 20))
        self.line_4.setFrameShape(QtWidgets.QFrame.HLine)
        self.line_4.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_4.setObjectName("line_4")
        self.shuxin = QtWidgets.QPushButton(self.centralwidget)
        self.shuxin.setGeometry(QtCore.QRect(40, 180, 81, 28))
        font = QtGui.QFont()
        font.setFamily("幼圆")
        font.setBold(True)
        font.setItalic(False)
        font.setUnderline(False)
        font.setWeight(75)
        self.shuxin.setFont(font)
        self.shuxin.setMouseTracking(False)
        self.shuxin.setStyleSheet("color: rgb(0, 0, 127);")
        self.shuxin.setAutoDefault(True)
        self.shuxin.setFlat(False)
        self.shuxin.setObjectName("shuxin")
        self.statics = QtWidgets.QToolButton(self.centralwidget)
        self.statics.setEnabled(False)
        self.statics.setGeometry(QtCore.QRect(170, 180, 101, 31))
        font = QtGui.QFont()
        font.setFamily("隶书")
        font.setPointSize(12)
        self.statics.setFont(font)
        self.statics.setCheckable(False)
        self.statics.setPopupMode(QtWidgets.QToolButton.DelayedPopup)
        self.statics.setAutoRaise(False)
        self.statics.setObjectName("statics")
        self.alert_order = QtWidgets.QPushButton(self.centralwidget)
        self.alert_order.setGeometry(QtCore.QRect(760, 130, 93, 28))
        font = QtGui.QFont()
        font.setFamily("隶书")
        font.setPointSize(12)
        self.alert_order.setFont(font)
        self.alert_order.setObjectName("alert_order")
        self.serach_edit = QtWidgets.QLineEdit(self.centralwidget)
        self.serach_edit.setGeometry(QtCore.QRect(370, 160, 211, 21))
        self.serach_edit.setEchoMode(QtWidgets.QLineEdit.Normal)
        self.serach_edit.setClearButtonEnabled(False)
        self.serach_edit.setObjectName("serach_edit")
        self.search_box = QtWidgets.QComboBox(self.centralwidget)
        self.search_box.setGeometry(QtCore.QRect(590, 160, 71, 22))
        font = QtGui.QFont()
        font.setFamily("隶书")
        font.setPointSize(11)
        font.setBold(True)
        font.setWeight(75)
        self.search_box.setFont(font)
        self.search_box.setObjectName("search_box")
        self.search_box.addItem("")
        self.search_box.addItem("")
        self.alert_edit = QtWidgets.QLineEdit(self.centralwidget)
        self.alert_edit.setGeometry(QtCore.QRect(860, 130, 71, 31))
        self.alert_edit.setObjectName("alert_edit")
        self.line_5 = QtWidgets.QFrame(self.centralwidget)
        self.line_5.setGeometry(QtCore.QRect(750, 110, 191, 20))
        self.line_5.setFrameShape(QtWidgets.QFrame.HLine)
        self.line_5.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_5.setObjectName("line_5")
        self.line_6 = QtWidgets.QFrame(self.centralwidget)
        self.line_6.setGeometry(QtCore.QRect(750, 200, 191, 20))
        self.line_6.setFrameShape(QtWidgets.QFrame.HLine)
        self.line_6.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_6.setObjectName("line_6")
        self.line_7 = QtWidgets.QFrame(self.centralwidget)
        self.line_7.setGeometry(QtCore.QRect(740, 120, 16, 91))
        self.line_7.setFrameShadow(QtWidgets.QFrame.Raised)
        self.line_7.setFrameShape(QtWidgets.QFrame.VLine)
        self.line_7.setObjectName("line_7")
        self.line_8 = QtWidgets.QFrame(self.centralwidget)
        self.line_8.setGeometry(QtCore.QRect(930, 120, 16, 91))
        self.line_8.setFrameShape(QtWidgets.QFrame.VLine)
        self.line_8.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_8.setObjectName("line_8")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 981, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        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", "MainWindow"))
        self.add_order.setStyleSheet(_translate("MainWindow", "color: rgb(0, 0, 127);"))
        self.add_order.setText(_translate("MainWindow", "添加"))
        self.delete_order.setStyleSheet(_translate("MainWindow", "color: rgb(0, 0, 127);"))
        self.delete_order.setText(_translate("MainWindow", "删除"))
        self.label.setText(_translate("MainWindow", "订单管理系统"))
        self.label_2.setText(_translate("MainWindow", "Author——》YMING"))
        self.tableWidget.setSortingEnabled(True)
        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", "备注"))
        self.delete_num.setPlaceholderText(_translate("MainWindow", "删除单号"))
        self.shuxin.setText(_translate("MainWindow", "刷新"))
        self.statics.setText(_translate("MainWindow", "统计分析"))
        self.alert_order.setStyleSheet(_translate("MainWindow", "color: rgb(0, 0, 127);"))
        self.alert_order.setText(_translate("MainWindow", "完成"))
        self.serach_edit.setPlaceholderText(_translate("MainWindow", "请键入搜索内容..."))
        self.search_box.setStyleSheet(_translate("MainWindow", "color: rgb(0, 0, 127);"))
        self.search_box.setItemText(0, _translate("MainWindow", "单号"))
        self.search_box.setItemText(1, _translate("MainWindow", "状态"))
        self.alert_edit.setPlaceholderText(_translate("MainWindow", "修改单号"))

2.主界面后端

import sys
from qtpy import QtWidgets
from database_handle import database_handle
from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidgetItem, QHBoxLayout, QTableWidget, QMessageBox, QMenu, \
    QAction, QToolButton
from 主界面 import Ui_MainWindow
from 订单添加后端 import order_handle, QRegExpValidator, QRegExp, QIcon, Qt


class main_window_handle(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi()

    def update_table(self):
        dh = database_handle()
        data = dh.get_all()
        row = len(data)
        self.tableWidget.setRowCount(row)
        for i in range(len(data)):
            for j in range(len(data[i])):
                item = QTableWidgetItem(str(data[i][j]))
                self.tableWidget.setItem(i, j, item)

    def delete_data(self):
        dh = database_handle()
        if self.delete_num.text() != '':
            dh.delete(int(self.delete_num.text()))
            QMessageBox.information(self, '提示', f'订单:{int(self.delete_num.text())}删除成功!')
            self.delete_num.setText('')
        self.update_table()

    def alert_data(self):
        dh = database_handle()
        id = self.alert_edit.text()
        if id != '':
            dh.update(id)
            QMessageBox.information(self, '提示', f'订单:{int(id)}状态修改成功!')
        self.update_table()

    def setupUi(self, **kwargs):
        super().setupUi(self)
        self.setWindowTitle('订单管理系统')
        self.setWindowIcon(QIcon('images/ic.ico'))
        self.setFixedSize(1000, 746)
        self.delete_num.setValidator(QRegExpValidator(QRegExp('[0-9]+$')))
        self.alert_edit.setValidator(QRegExpValidator(QRegExp('[0-9]+$')))
        self.tableWidget.setEditTriggers(QTableWidget.NoEditTriggers)
        self.tableWidget.clicked.connect(self.update_table)
        self.shuxin.clicked.connect(self.update_table)
        self.delete_order.clicked.connect(self.delete_data)
        self.update_table()
        self.alert_tool_add()
        self.search_box.currentIndexChanged.connect(self.search)
        self.serach_edit.setText('待交')
        self.setWindowOpacity(0.95)
        self.add_order.setIcon(QIcon('images/add.ico'))
        self.alert_order.setIcon(QIcon('images/alert.ico'))
        self.delete_order.setIcon(QIcon('images/delete.ico'))
        self.shuxin.setIcon(QIcon('images/update.ico'))
        self.alert_order.clicked.connect(self.alert_data)
        self.setStyleSheet("#MainWindow{border-image:url(images/bj.png)}")
        op = QtWidgets.QGraphicsOpacityEffect()
        op.setOpacity(0.6)
        self.serach_edit.setGraphicsEffect(op)
        self.statics.setHidden(True)

    def search(self):
        type = self.search_box.currentText()
        content = self.serach_edit.text()
        if type == '状态':
            dh = database_handle()
            data = dh.get_state(content)
            row = len(data)
            self.tableWidget.setRowCount(row)
            for i in range(len(data)):
                for j in range(len(data[i])):
                    item = QTableWidgetItem(str(data[i][j]))
                    self.tableWidget.setItem(i, j, item)

        if type == '单号':
            dh = database_handle()
            data = dh.get_id(content)
            row = len(data)
            self.tableWidget.setRowCount(row)
            for i in range(len(data)):
                for j in range(len(data[i])):
                    item = QTableWidgetItem(str(data[i][j]))
                    self.tableWidget.setItem(i, j, item)

    def alert_tool_add(self):
        menu = QMenu(self.statics)
        action = QAction(QIcon('images/finish.ico'), '完成', menu)
        action.triggered.connect(lambda: print('ssss'))
        menu.addAction(action)
        menu.addSeparator()
        self.statics.setMenu(menu)
        self.statics.setPopupMode(QToolButton.MenuButtonPopup)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    mwh = main_window_handle()
    mwh.show()
    oh = order_handle()
    om = oh.mainwindow
    mwh.add_order.clicked.connect(om.show)

    sys.exit(app.exec_())

3.订单添加页面

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file '订单添加.ui'
#
# Created by: PyQt5 UI code generator 5.14.1
#
# WARNING! All changes made in this file will be lost!


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.setWindowModality(QtCore.Qt.WindowModal)
        MainWindow.setEnabled(True)
        MainWindow.resize(1060, 746)
        font = QtGui.QFont()
        font.setFamily("华文楷体")
        font.setPointSize(12)
        font.setBold(True)
        font.setItalic(False)
        font.setWeight(75)
        MainWindow.setFont(font)
        MainWindow.setInputMethodHints(QtCore.Qt.ImhNone)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setGeometry(QtCore.QRect(540, 180, 41, 21))
        self.label_3.setObjectName("label_3")
        self.label_4 = QtWidgets.QLabel(self.centralwidget)
        self.label_4.setGeometry(QtCore.QRect(200, 320, 91, 21))
        self.label_4.setObjectName("label_4")
        self.label_5 = QtWidgets.QLabel(self.centralwidget)
        self.label_5.setGeometry(QtCore.QRect(540, 250, 91, 16))
        self.label_5.setObjectName("label_5")
        self.label_6 = QtWidgets.QLabel(self.centralwidget)
        self.label_6.setGeometry(QtCore.QRect(540, 320, 141, 21))
        self.label_6.setObjectName("label_6")
        self.label_7 = QtWidgets.QLabel(self.centralwidget)
        self.label_7.setGeometry(QtCore.QRect(200, 390, 101, 21))
        self.label_7.setObjectName("label_7")
        self.label_8 = QtWidgets.QLabel(self.centralwidget)
        self.label_8.setGeometry(QtCore.QRect(200, 500, 61, 16))
        self.label_8.setObjectName("label_8")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(200, 180, 50, 30))
        self.label_2.setObjectName("label_2")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(200, 240, 51, 41))
        self.label.setObjectName("label")
        self.title = QtWidgets.QLabel(self.centralwidget)
        self.title.setGeometry(QtCore.QRect(460, 40, 211, 61))
        font = QtGui.QFont()
        font.setFamily("华文新魏")
        font.setPointSize(29)
        font.setBold(True)
        font.setItalic(False)
        font.setUnderline(False)
        font.setWeight(75)
        font.setStrikeOut(False)
        font.setKerning(True)
        self.title.setFont(font)
        self.title.setObjectName("title")
        self.order_number = QtWidgets.QLineEdit(self.centralwidget)
        self.order_number.setGeometry(QtCore.QRect(310, 180, 151, 21))
        self.order_number.setObjectName("order_number")
        self.order_name = QtWidgets.QLineEdit(self.centralwidget)
        self.order_name.setGeometry(QtCore.QRect(310, 250, 151, 21))
        self.order_name.setObjectName("order_name")
        self.order_type = QtWidgets.QComboBox(self.centralwidget)
        self.order_type.setGeometry(QtCore.QRect(700, 180, 151, 30))
        font = QtGui.QFont()
        font.setBold(False)
        font.setWeight(50)
        self.order_type.setFont(font)
        self.order_type.setObjectName("order_type")
        self.order_type.addItem("")
        self.order_type.addItem("")
        self.order_type.addItem("")
        self.order_type.addItem("")
        self.order_type.addItem("")
        self.order_type.addItem("")
        self.state = QtWidgets.QComboBox(self.centralwidget)
        self.state.setGeometry(QtCore.QRect(310, 390, 81, 22))
        font = QtGui.QFont()
        font.setBold(False)
        font.setWeight(50)
        self.state.setFont(font)
        self.state.setObjectName("state")
        self.state.addItem("")
        self.state.addItem("")
        self.state.addItem("")
        self.price = QtWidgets.QLineEdit(self.centralwidget)
        self.price.setGeometry(QtCore.QRect(310, 320, 151, 21))
        self.price.setObjectName("price")
        self.others = QtWidgets.QPlainTextEdit(self.centralwidget)
        self.others.setGeometry(QtCore.QRect(310, 440, 461, 131))
        self.others.setObjectName("others")
        self.end_date = QtWidgets.QDateTimeEdit(self.centralwidget)
        self.end_date.setGeometry(QtCore.QRect(700, 320, 194, 22))
        self.end_date.setDateTime(QtCore.QDateTime(QtCore.QDate(2020, 7, 1), QtCore.QTime(0, 0, 0)))
        self.end_date.setCalendarPopup(True)
        self.end_date.setObjectName("end_date")
        self.start_date = QtWidgets.QDateTimeEdit(self.centralwidget)
        self.start_date.setGeometry(QtCore.QRect(700, 250, 194, 22))
        self.start_date.setDateTime(QtCore.QDateTime(QtCore.QDate(2020, 7, 1), QtCore.QTime(0, 0, 0)))
        self.start_date.setCalendarPopup(True)
        self.start_date.setObjectName("start_date")
        self.submit = QtWidgets.QPushButton(self.centralwidget)
        self.submit.setGeometry(QtCore.QRect(490, 610, 91, 31))
        font = QtGui.QFont()
        font.setFamily("华文新魏")
        font.setPointSize(16)
        font.setBold(False)
        font.setWeight(50)
        self.submit.setFont(font)
        self.submit.setMouseTracking(False)
        self.submit.setObjectName("submit")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 1060, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        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", "MainWindow"))
        self.label_3.setText(_translate("MainWindow", "类型"))
        self.label_4.setText(_translate("MainWindow", "成交价格"))
        self.label_5.setText(_translate("MainWindow", "成交日期"))
        self.label_6.setText(_translate("MainWindow", "交货截至日期"))
        self.label_7.setText(_translate("MainWindow", "交货状态"))
        self.label_8.setText(_translate("MainWindow", "备注"))
        self.label_2.setText(_translate("MainWindow", "单号"))
        self.label.setText(_translate("MainWindow", "单名"))
        self.title.setText(_translate("MainWindow", "订单添加"))
        self.order_number.setPlaceholderText(_translate("MainWindow", "请输入单号"))
        self.order_name.setPlaceholderText(_translate("MainWindow", "请输入单名"))
        self.order_type.setItemText(0, _translate("MainWindow", "Python"))
        self.order_type.setItemText(1, _translate("MainWindow", "C"))
        self.order_type.setItemText(2, _translate("MainWindow", "Java"))
        self.order_type.setItemText(3, _translate("MainWindow", "代考"))
        self.order_type.setItemText(4, _translate("MainWindow", "资料售卖"))
        self.order_type.setItemText(5, _translate("MainWindow", "代写设计报告"))
        self.state.setItemText(0, _translate("MainWindow", "待交"))
        self.state.setItemText(1, _translate("MainWindow", "完成"))
        self.state.setItemText(2, _translate("MainWindow", "失败"))
        self.price.setPlaceholderText(_translate("MainWindow", "请输入成交价"))
        self.end_date.setDisplayFormat(_translate("MainWindow", "yyyy-MM-dd"))
        self.start_date.setDisplayFormat(_translate("MainWindow", "yyyy-MM-dd"))
        self.submit.setText(_translate("MainWindow", "提交"))

4.订单添加页面后端

from 订单添加 import Ui_MainWindow
import sys
import pymysql
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.Qt import *
import time
from PyQt5 import QtCore, QtGui


class order_handle():
    def __init__(self):
        self.mainwindow = QMainWindow()
        self.um = Ui_MainWindow()
        self.db = pymysql.connect('localhost', 'root', 'root', '订单管理')
        self.create_table()
        self.set_ui()

    def set_ui(self):
        self.mainwindow.setWindowIcon(QIcon('images/ic.ico'))
        self.mainwindow.setFixedSize(1060, 746)
        self.mainwindow.setWindowOpacity(0.95)
        self.um.setupUi(self.mainwindow)
        self.um.price.setValidator(QRegExpValidator(QRegExp('[0-9 \.]+$')))
        self.um.order_number.setValidator(QRegExpValidator(QRegExp('[0-9]+$')))
        self.um.start_date.setDateTime(
            QtCore.QDateTime(QtCore.QDate(time.gmtime().tm_year, time.gmtime().tm_mon, time.gmtime().tm_mday),
                             QtCore.QTime(0, 0, 0)))
        self.um.end_date.setDateTime(
            QtCore.QDateTime(QtCore.QDate(time.gmtime().tm_year, time.gmtime().tm_mon, time.gmtime().tm_mday),
                             QtCore.QTime(0, 0, 0)))
        self.um.submit.clicked.connect(self.add_order)
        self.mainwindow.setWindowTitle('订单管理系统')





    def create_table(self):
        sql = "create table if not exists order_manger(id  int  primary key NOT NULL ,order_name varchar(50),order_type varchar(20),price FLOAT ,state varchar(5),start_date DATE,end_date DATE,others VARCHAR(500))"
        cursor = self.db.cursor()
        try:
            cursor.execute(sql)
            self.db.commit()
        except:
            self.db.rollback()
            pass

    def add_order(self):
        res=QMessageBox.information(self.mainwindow,'提交警告','你确定上传单子信息?',QMessageBox.Yes|QMessageBox.No)
        if res==65536:
            return

        order_name = self.um.order_name.text()
        order_number = self.um.order_number.text()
        order_type = self.um.order_type.currentText()
        price = self.um.price.text()
        start_date = self.um.start_date.text()
        end_date = self.um.end_date.text()
        state = self.um.state.currentText()
        others = self.um.others.toPlainText()

        try:
            sql = f"insert into order_manger values({order_number},'{order_name}','{order_type}',{float(price)},'{state}','{start_date}','{end_date}','{others}') "
            print(sql)
            cursor = self.db.cursor()

            cursor.execute(sql)
            self.db.commit()
            QMessageBox.information(self.mainwindow, '提示', '订单提交成功!')
            print('添加成功')
        except pymysql.err.IntegrityError:
            self.db.rollback()
            QMessageBox.information(self.mainwindow, '提示', '该单号已存在!')
        except ValueError:
            QMessageBox.information(self.mainwindow, '提示', '表单信息填写错误!')
        except:
            self.db.rollback()
            print('error')



if __name__ == '__main__':
    app = QApplication(sys.argv)
    t=order_handle()
    t.mainwindow.show()
    sys.exit(app.exec_())

5.数据库(mysql)交互

import pymysql


class database_handle():
    def __init__(self):
        self.db = pymysql.connect('localhost', 'root', 'root', '订单管理')

    def get_all(self):
        sql = "select * from order_manger"
        cursor = self.db.cursor()
        cursor.execute(sql)
        data = cursor.fetchall()
        self.db.commit()

        return data

    def delete(self, id):
        sql = f"delete from order_manger where id={id}"
        cursor = self.db.cursor()
        cursor.execute(sql)
        self.db.commit()

    def update(self, id):
        sql = f''

    def get_hearders(self):
        sql = f"show columns from order_manger"
        cursor = self.db.cursor()
        cursor.execute(sql)
        cols = cursor.fetchall()
        self.db.commit()
        return cols

    def get_state(self, state):
        sql = "select * from order_manger where state ='%s'" % (state)
        try:
            cursor = self.db.cursor()
            cursor.execute(sql)
            data = cursor.fetchall()
            self.db.commit()
        except:
            self.db.rollback()
        return data

    def get_id(self, id):
        sql = "select * from order_manger where id ='%s'" % (id)
        try:
            cursor = self.db.cursor()
            cursor.execute(sql)
            data = cursor.fetchall()
            self.db.commit()
        except:
            self.db.rollback()
        return data
    def update(self,id):
        sql="update order_manger set state='%s' where id=%s"%('完成',id)
        print(sql)
        try:
            cursor = self.db.cursor()
            cursor.execute(sql)
            self.db.commit()
        except:
            self.db.rollback()


if __name__ == '__main__':
    dh = database_handle()
    print(dh.update(19))
    pass

效果展示

Python+mysql=接单管理系统_第1张图片
Python+mysql=接单管理系统_第2张图片
这些是一些图标,背景图。在相对路径images文件夹下
Python+mysql=接单管理系统_第3张图片
注意事项:因为我用的我电脑上MySQL,所以要使用得配置mysql,然后自己根据数据库操作代码修改配置,虽然简陋,但是满足自己的小需求可还行

你可能感兴趣的:(Python+mysql=接单管理系统)