起因:接的单子越来越多,各种信息记录太麻烦,容易弄丢还不好统计
经过:闲得慌用python花了两个下午写了个自用的接单管理系统,复习一下pyqt5的使用
结果:就这样吧,懒得办了
思路就是本人太懒,所以直接上代码
# -*- 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
效果展示
这些是一些图标,背景图。在相对路径images文件夹下
注意事项:因为我用的我电脑上MySQL,所以要使用得配置mysql,然后自己根据数据库操作代码修改配置,虽然简陋,但是满足自己的小需求可还行