pyqt5实践踩坑指南及实践项目(求职招聘桌面应用)

QWidgets子类QTextEdit常用函数

toPlainText()获得多行文本
setPlainText()设置多行文本  # 实践中倒置python程序崩溃
想要初始化textEdit文本解决方法:
使用QTextEdit.append(text)

在本学期做的招聘桌面应用中
这里只展示求职者端的代码及效果:

20220706_151829

# mianWindow.py 切换窗口主程序
import sys
sys.path.append('../Logup/')
sys.path.append('../user/')
sys.path.append('../BOOS')
sys.path.append('../Administrator')
import LogupWindow as logup
import UserWindow as user
import BoosWindow as boss
import AdministratorWindow as adm

from PyQt5.QtWidgets import QApplication, QMainWindow

class mainWindows:
    def __init__(self):
        self.logupW = logup.LoadingWindow()
        self.logupW.switch.connect(self.switchWindows)
        self.logupW.show()

    def switchWindows(self):
        self.client = self.logupW.client
        self.id = self.logupW.userid
        self.password = self.logupW.password
        self.username = self.logupW.username
        self.identity = self.logupW.identity
        self.logupW.close()
        if self.identity == 'users':
            print("登录user")
            self.userW = user.UserWindow(self.client, self.id, self.password, self.username, self.identity)
            self.userW.show()

        elif self.identity == 'bosses':
            print("登录boss")
            # print(self.logupW.username)
            self.bossW = boss.BoosWindow(self.client,self.id, self.username, self.identity)
            self.bossW.show()

        else:
            print("登录managers")
            self.admW = adm.AdministratorWindow(self.client, self.id, self.password, self.username, self.identity)


if __name__=="__main__":
    app = QApplication(sys.argv)
    main = mainWindows()
    sys.exit(app.exec_())

登录界面,我使用pyqt并给予qt designer所以对于窗口图形界面的设计这里不展示代码:

# login_db.py验证登录和注册账号的逻辑,请求服务器
import sqlite3
import json
import socket

from TCPmodule import m_recv


def register(client, id, password, name, identity):
    jdata = [{'request': 'register', 'id': id, 'passwd': password, 'identity': identity, 'name': name}]
    client.send(json.dumps(jdata).encode())
    j_res = json.loads(m_recv(client))
    print(j_res)
    if j_res[0]['request_return'] == 'register':
        return j_res[0]['register_state']
    else:
        print('服务器返回数据出错!')
        return 'error'

def login(client, id, password, identity):

    jdata = [{'request': 'login', 'id': id, 'passwd': password, 'identity': identity}]
    client.send(json.dumps(jdata).encode())
    # 服务器返回登录状态信息
    # '用户未注册或账号错误'
    # '密码错误'
    # '登录成功'
    j_res = json.loads(m_recv(client))
    print('登录结果:j_res', j_res)
    if j_res[0]['login_state'] == '用户未注册或账号错误':
        info = []
        res = [j_res[0]['login_state'], info]
        print(res)
        if j_res[0]['request_return'] == 'login':
            return res
        else:
            print('服务器返回数据出错!')
            return 'error'

    elif j_res[0]['login_state'] == '密码错误':
        info = []
        res = [j_res[0]['login_state'], info]
        print(res)
        if j_res[0]['request_return'] == 'login':
            return res
        else:
            print('服务器返回数据出错!')
            return 'error'

    else:
        info = []
        info.append(j_res[1]['id'])
        info.append(j_res[1]['password'])
        info.append(j_res[1]['name'])
        res = [j_res[0]['login_state'], info]
        # res = client.recv(1024).decode()
        print(res)
        if j_res[0]['request_return'] == 'login':
            return res
        else:
            print('服务器返回数据出错!')
            return 'error'

# 登录界面主程序,调用图形界面及登录注册验证及窗口切换
from loading import *  # qt designer生成的图形界面代码
import login_db
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5 import QtCore
import socket


class LoadingWindow(QMainWindow):
    switch = QtCore.pyqtSignal()  # 切换窗口信号
    def switch_widget2(self):
        self.ui.widget.hide()
        self.hide_error()
        self.ui.widget_2.show()

    def switch_widget(self):
        self.ui.widget_2.hide()
        self.hide_error()
        self.ui.widget.show()

    def show_error(self):
        self.ui.label_3.setText(self.massage)
        self.ui.label_3.show()

    def hide_error(self):
        self.ui.label_3.hide()

    def __init__(self):
        super().__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.widget_2.hide()
        self.ui.label_3.hide()
        self.ui.pushButton_5.clicked.connect(self.switch_widget)
        self.ui.pushButton_4.clicked.connect(self.switch_widget2)
        self.ui.pushButton_3.clicked.connect(self.logining)
        self.ui.pushButton_6.clicked.connect(self.registering)

        # 连接服务器
        self.client = socket.socket()
        host = '47.99.201.114'
        port = 1010
        self.client.connect((host, port))


        # 隐藏窗口
        self.setWindowFlag(QtCore.Qt.FramelessWindowHint)
        self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
        self.show()

    def mousePressEvent(self, event):
        if event.button() == QtCore.Qt.LeftButton and self.isMaximized() == False:
            self.m_flag = True
            self.m_Position = event.globalPos() - self.pos()
            event.accept()
            self.setCursor(QtGui.QCursor(QtCore.Qt.OpenHandCursor))

    def mouseMoveEvent(self, mouse_event):
        if QtCore.Qt.LeftButton and self.m_flag:
            self.move(mouse_event.globalPos() - self.m_Position)
            mouse_event.accept()

    def mouseReleaseEvent(self, mouse_event):
        self.m_flag = False
        self.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))

    def logining(self):
        self.userid = self.ui.lineEdit.text()
        print(self.userid)
        self.password = self.ui.lineEdit_2.text()
        print(self.password)
        if self.ui.radioButton.isChecked():
            self.identity = 'users'
        elif self.ui.radioButton_2.isChecked():
            self.identity = 'managers'
        elif self.ui.radioButton_5.isChecked():
            self.identity = 'bosses'
        else:
            self.massage = '未选择身份!'
            self.show_error()
        if self.userid=='':
            self.massage = '用户名为空!'
            self.show_error()
        print("账号输入",self.userid,self.password,self.identity)
        print('login_db')
        a = login_db.login(self.client, self.userid, self.password, self.identity)
        print('a等于', a)

        if a[0] == '用户未注册或账号错误':
            self.massage = '用户未注册或账号错误!'
            print('用户未注册或账号错误!')
            self.show_error()
        elif a[0] == '密码错误':
            self.massage = '密码错误!'
            print('密码错误!')
            self.show_error()

        else:
            self.userid = a[1][0]
            self.password = a[1][1]
            self.username = a[1][2]
            print('登录成功!', self.identity)
            self.switch.emit()

        # if a > 0:
        #     print('登录成功!')
        # else:
        #     self.massage = '用户名或密码错误!'
        #     print('用户名或密码错误!')
        #     self.show_error()


    def registering(self):
        self.userid = self.ui.lineEdit_4.text()
        print(self.userid)
        if self.userid == '':
            self.massage='用户名为空!'
            self.show_error()
        self.password = self.ui.lineEdit_3.text()
        print(self.password)
        self.password_2 = self.ui.lineEdit_5.text()
        if self.password != self.password_2:
            print('确认密码错误!')
            self.massage = '确认密码错误!'
            self.show_error()
            return
        else:
            if self.ui.radioButton_4.isChecked():
                self.identity = 'users'
            elif self.ui.radioButton_6.isChecked():
                self.identity = 'bosses'
            else:
                print('未选择身份')
                self.massage = '未选择身份'
                self.show_error()

            self.username = self.ui.lineEdit_6.text()
            print("昵称", self.username)

            a = login_db.register(self.client, self.userid, self.password, self.username, self.identity)
            if a == '注册成功':
                self.massage = '注册成功!'
                self.show_error()
            else:
                self.massage = 'ERROR注册失败!'
                self.show_error()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = LoadingWindow()
    sys.exit(app.exec_())

求职者登录成功后跳转到用户窗口

# UserWindow.py主程序,调度各种小窗口
from PyQt5.QtChart import QPieSeries, QChart, QPieSlice
import addjianli as jianli

from TCPmodule import m_recv
from userUI import *
import pyqdetail as detail
import pymysql
import sys
import json
import _thread
import time
from PyQt5.QtWidgets import QWidget, QTableView, QAbstractItemView, QToolTip, qApp, QPushButton, QLabel, QVBoxLayout, \
    QHBoxLayout, QApplication, QMainWindow, QHeaderView, QMessageBox

from PyQt5.QtCore import Qt, QStringListModel
from PyQt5.QtGui import QStandardItemModel, QStandardItem, QCursor, QFont, QPainter


# self.client, self.id, self.password, self.username, self.identity
class UserWindow(QMainWindow):
    def __init__(self, client, userid, password, username, identity):
        super().__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.messagelist = []  # *********************
        self.slm = QStringListModel()
        self.slm.setStringList(self.messagelist)
        self.ui.listView.setModel(self.slm)
        self.ui.pushButton_3.clicked.connect(self.sendresume)
        self.ui.pushButton_4.clicked.connect(self.addjianli)
        self.ui.pushButton_5.clicked.connect(self.zhuxiao)

        self.userid = userid
        self.password = password
        self.username = username
        self.identity = identity
        self.ui.label_5.setText(self.username)
        self.ui.label_6.setText(self.userid)
        print("启动user窗口")

        # 隐藏窗口
        self.setWindowFlag(QtCore.Qt.FramelessWindowHint)
        self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
        self.show()
        self.client = client



        try:
            self.getdata()
        except:
            print("启动线程1失败", sys.exc_info()[0])
        try:
            self.getchartdetail()
        except:
            print("启动线程2失败", sys.exc_info()[0])

    def getdata(self):
      
        print("开始查询getdata")
        sql = "SELECT jobName,jobCompany,jobSalary,jobPlace,jobOfferid,jobDescribe,jobEducation,jobExperience FROM jobOfferDetail;"
        jdata = [{'request': 'getJobDetailSQL', 'sql': sql}]
        self.client.send(json.dumps(jdata).encode())
        jres = json.loads(m_recv(self.client))
        print("jres是", jres)
        print("jres[0]['num']", jres[0]['num'])
        self.all_job_datas = []
        self.all_job_datas.append(jres[0]['num'])
        self.all_job_datas.append([])
        for i in range(0, jres[0]['num']):
            job = []
            job.append(jres[i + 1]['jobName'])
            job.append(jres[i + 1]['jobCompany'])
            job.append(jres[i + 1]['jobSalary'])
            job.append(jres[i + 1]['jobPlace'])
            job.append(jres[i + 1]['jobOfferid'])
            job.append(jres[i + 1]['jobDescribe'])
            job.append(jres[i + 1]['jobEducation'])
            job.append(jres[i + 1]['jobExperience'])
            self.all_job_datas[1].append(job)
        print(self.all_job_datas)

        print('self.userid', self.userid)
        sql2 = "SELECT jobName,jobCompany,jobSalary,jobPlace,jobOfferid FROM jobOfferDetail WHERE jobOfferid IN (SELECT jobOfferid FROM resume WHERE id =\'{}\');".format(
            self.userid)
        print('sql2', sql2)
        jdata = [{'request': 'getJobDetailSQL', 'sql': sql2}]
        self.client.send(json.dumps(jdata).encode())
        jres = json.loads(m_recv(self.client))
        print("jres是", jres)
        print("jres[0]['num']", jres[0]['num'])
        self.all_job_datas2 = []
        self.all_job_datas2.append(jres[0]['num'])
        self.all_job_datas2.append([])
        for i in range(0, jres[0]['num']):
            job = []
            job.append(jres[i + 1]['jobName'])
            job.append(jres[i + 1]['jobCompany'])
            job.append(jres[i + 1]['jobSalary'])
            job.append(jres[i + 1]['jobPlace'])
            job.append(jres[i + 1]['jobOfferid'])
            self.all_job_datas2[1].append(job)
        print(self.all_job_datas2)

        self.column_name = ['工作名称', '公司', '薪酬', '工作地点']
        self.model = QStandardItemModel(self.all_job_datas[0], 4)
        self.model2 = QStandardItemModel(self.all_job_datas2[0], 4)
        self.model.setHorizontalHeaderLabels(self.column_name)
        self.model2.setHorizontalHeaderLabels(self.column_name)
        self.table_view = self.ui.tableView
        self.table_view_2 = self.ui.tableView_2
        self.table_view.setSelectionMode(QAbstractItemView.SingleSelection)  # 选中一个单元格
        self.table_view.setSelectionBehavior(QAbstractItemView.SelectItems)  # 单元格选中模式
        self.table_view.doubleClicked.connect(self.get_table_item)
        self.table_view.clicked.connect(self.get_cell_tip)
        self.table_view.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)  # 使表宽度自适应
        self.table_view_2.setSelectionMode(QAbstractItemView.SingleSelection)  # 选中一个单元格
        self.table_view_2.setSelectionBehavior(QAbstractItemView.SelectItems)  # 单元格选中模式
        self.table_view_2.doubleClicked.connect(self.get_table_item)
        self.table_view_2.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)  # 使表宽度自适应

        for i in range(self.all_job_datas[0]):
            for j in range(4):
                job_info = QStandardItem(str(self.all_job_datas[1][i][j]))
                self.model.setItem(i, j, job_info)
                job_info.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
        for i in range(self.all_job_datas2[0]):
            for j in range(4):
                job_info = QStandardItem(str(self.all_job_datas2[1][i][j]))
                self.model2.setItem(i, j, job_info)
                job_info.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter)

        self.table_view.setEditTriggers(QAbstractItemView.NoEditTriggers)  # 表格不可编辑
        self.table_view_2.setEditTriggers(QAbstractItemView.NoEditTriggers)  # 表格不可编辑
        self.table_view.setModel(self.model)
        self.table_view_2.setModel(self.model2)
        print("getdata结束")
        return

    def get_cell_tip(self):
        """ 设置单元格提示信息 """
        contents = self.table_view.currentIndex().data()
        self.row = self.table_view.currentIndex().row()  # 获取所在行数
        print("选中行数为", self.row)
        print("all_job_datas", self.all_job_datas)
        self.jobOfferid = self.all_job_datas[1][self.row][4]
        print("选中工作id为", self.jobOfferid)
        QToolTip.showText(QCursor.pos(), contents)

    def get_table_item(self, index):
        """获取表格中的数据"""
        col = index.column()
        row = index.row()
        tmp = self.all_job_datas[1][row]
        print(tmp)
        m_detail = {'jobName':tmp[0], 'jobCompany':tmp[1], 'jobSalary':tmp[2], 'jobPlace':tmp[3], 'jobDescribe':tmp[5], 'jobEducation':tmp[6], 'jobExperience':tmp[7]}
        self.show_detail = detail.pyqdetail(m_detail)
        self.show_detail.show()
        

    def getchartdetail(self):
        
        sql = "SELECT jobEducation, COUNT(*) AS eduNum FROM jobOfferDetail GROUP BY jobEducation;"
        jdata = [{'request': 'getJobDetailSQL', 'sql': sql}]
        self.client.send(json.dumps(jdata).encode())
        jres = json.loads(m_recv(self.client))
        print("饼图1是", jres)
        print("jres[0]['num']", jres[0]['num'])
        num = jres[0]['num']
        data = []
        for i in range(0, num):
            index = []
            index.append(jres[i + 1]['jobEducation'])
            index.append(jres[i + 1]['eduNum'])
            data.append(index)
        print("data", data)

        sql = "SELECT jobPlace, COUNT(*) AS placeNum FROM jobOfferDetail GROUP BY jobPlace;"
        jdata = [{'request': 'getJobDetailSQL', 'sql': sql}]
        self.client.send(json.dumps(jdata).encode())
        jres = json.loads(m_recv(self.client))
        print("饼图2是", jres)
        print("jres[0]['num']", jres[0]['num'])
        num2 = jres[0]['num']
        data2 = []
        for i in range(0, num2):
            index = []
            index.append(jres[i + 1]['jobPlace'])
            index.append(jres[i + 1]['placeNum'])
            data2.append(index)
        print("data2", data2)

        self.color = ["#ffc656", "#2fc7e8", "#3ed7b7", "#0099CC", "#99CC66", "#CCCCCC", "#FF6666", "#333399", "#FF0033",
                      "#FFFF00", "#FFCCCC", "#003399", "#99CC00", "#009999", "#990066", "#666699"]

        self.pieseries1 = QPieSeries()
        self.pieseries1.hovered.connect(self.do_pieHover)
        for x in data:
            self.pieseries1.append(x[0], x[1])
            print(x[0], x[1])

        self.slice = QPieSlice()
        print(1)
        for i in range(0, num):
            self.slice = self.pieseries1.slices()[i]
            self.slice.setLabelVisible(False)
            # slice.setPen(QPen(Qt.white, 10))
            self.slice.setBrush(QtGui.QColor(self.color[i]))

        self.pieseries2 = QPieSeries()
        self.pieseries2.hovered.connect(self.do_pieHover)
        for x in data2:
            self.pieseries2.append(x[0], x[1])
            print(x[0], x[1])

        self.slice2 = QPieSlice()
        print(1)
        for i in range(0, num2):
            self.slice2 = self.pieseries2.slices()[i]
            self.slice2.setLabelVisible(False)
            # slice.setPen(QPen(Qt.white, 10))
            self.slice2.setBrush(QtGui.QColor(self.color[i]))

        self.chart1 = QChart()  # 定义QChart
        self.chart2 = QChart()

        self.chart1.legend().hide()
        self.chart2.legend().hide()

        self.chart1.createDefaultAxes()
        self.chart2.createDefaultAxes()

        self.chart1.addSeries(self.pieseries1)
        self.chart2.addSeries(self.pieseries2)

        self.chart1.setTitle("教育分布")
        self.chart2.setTitle("地区分布")

        self.chart1.legend().setVisible(True)
        self.chart2.legend().setVisible(True)

        self.chart1.legend().setAlignment(Qt.AlignBottom)
        self.chart2.legend().setAlignment(Qt.AlignBottom)

        self.chartview = self.ui.chartview
        self.chartview_2 = self.ui.chartview_2
        self.chart1.setAnimationOptions(QChart.SeriesAnimations)
        self.chart2.setAnimationOptions(QChart.SeriesAnimations)
        self.chartview.setRenderHint(QPainter.Antialiasing)
        self.chartview_2.setRenderHint(QPainter.Antialiasing)

        self.chartview.setChart(self.chart1)
        self.chartview.show()
        self.chartview_2.setChart(self.chart2)
        self.chartview_2.show()

    def do_pieHover(self, sli, states):
        if states:
            sli.setExploded(True)
            sli.setLabelVisible(True)
        else:
            sli.setExploded(False)
            sli.setLabelVisible(False)

    def sendresume(self):
        print("投递")
       
        sql = "SELECT * FROM resume WHERE id=\'{}\' AND jobOfferid={};".format(self.userid, self.jobOfferid)
        print('sql', sql)
        jdata = [{'request': 'getJobDetailSQL', 'sql': sql}]
        self.client.send(json.dumps(jdata).encode())
        jres = json.loads(m_recv(self.client))
        print("jres[0]['num']", jres[0]['num'])
        num = jres[0]['num']
        if num == 0:
            sql2 = "INSERT INTO resume VALUES ({},{});".format(self.userid, self.jobOfferid)
            print("sql2", sql2)
            jdata = [{'request': 'getJobDetailSQL', 'sql': sql2}]
            self.client.send(json.dumps(jdata).encode())
            jres = json.loads(m_recv(self.client))
            print("插入返回结果", jres[0]['num'])
            message = "投递简历至{}成功!".format(self.all_job_datas[1][self.row][0])
            self.messagelist.append(message)
            self.slm.setStringList(self.messagelist)

        try:
            _thread.start_new_thread(self.getdata, ())
            message = "刷新成功!"
            self.messagelist.append(message)
            self.slm.setStringList(self.messagelist)
        except:
            print("刷新失败")

    def addjianli(self):
        self.jianliWindow = jianli.addjianli(self.client, self.userid, self.identity)
        self.jianliWindow.show()
        self.jianliWindow.addsuccess.connect(self.addmessage)  # 简历上传成功后显示信息

    def addmessage(self, message):
        self.jianliWindow.close()
        self.messagelist.append(message)
        self.slm.setStringList(self.messagelist)

    def mousePressEvent(self, event):
        if event.button() == QtCore.Qt.LeftButton and self.isMaximized() == False:
            self.m_flag = True
            self.m_Position = event.globalPos() - self.pos()
            event.accept()
            self.setCursor(QtGui.QCursor(QtCore.Qt.OpenHandCursor))

    def mouseMoveEvent(self, mouse_event):
        if QtCore.Qt.LeftButton and self.m_flag:
            self.move(mouse_event.globalPos() - self.m_Position)
            mouse_event.accept()

    def mouseReleaseEvent(self, mouse_event):
        self.m_flag = False
        self.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))

    def zhuxiao(self):
        res = QMessageBox.question(self, "确认注销账号", "账号注销数据无法恢复!", QMessageBox.Yes | QMessageBox.Cancel)
        if res == QMessageBox.Yes:
            sql = "DELETE FROM {} WHERE id=\'{}\';".format(self.identity, self.userid)
            print("删除账号", sql)
            jdata = [{'request': 'getAccDetailSQL', 'sql': sql}]
            self.client.send(json.dumps(jdata).encode())
            jres = json.loads(m_recv(self.client))
            if jres[0]['num'] == 1:
                QMessageBox.about(self, '注销账号', '成功!')
                self.close()
            else:
                QMessageBox.critical(self, '注销账号失败', '可能存在网络问题')
        else:
            return


if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = UserWindow()
    sys.exit(app.exec_())


# addjianli.py 填写上传简历代码
import json
import sys
import _thread

from PyQt5.QtWidgets import QMainWindow, QApplication, QMessageBox

from TCPmodule import m_recv
from jianli import *  # 图形界面代码
from PyQt5 import QtCore
import socket

class addjianli(QMainWindow):
    addsuccess = QtCore.pyqtSignal(str)  # 上传完成信号
    def __init__(self, client, userid, identity):
        super().__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.userid = userid
        self.identity = identity
        self.mode = False  # mode为false说明第一次上传简历 ,为true说明时修改简历

        print("启动user窗口")

        # 隐藏窗口
        self.setWindowFlag(QtCore.Qt.FramelessWindowHint)
        self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
        self.show()
        self.client = client
        self.ui.pushButton_3.clicked.connect(self.addresume)

        try:
            _thread.start_new_thread(self.getresumm, ())
        except:
            print('获取简历失败')

    def getresumm(self):
        sql = "SELECT * FROM personalResume WHERE id=\'{}\';".format(self.userid)
        jdata = [{'request': 'getJobDetailSQL', 'sql': sql}]
        self.client.send(json.dumps(jdata).encode())
        jres = json.loads(m_recv(self.client))
        print("jres[0]['num']", jres[0]['num'])
        num = jres[0]['num']
        if num == 0:
            self.mode = False
            print("mode是", self.mode)
        else:
            self.mode = True
            print("mode是", self.mode)
            datas = jres[1]
            print("已有简历", datas)
            self.ui.lineEdit.setText(datas['name'])
            self.ui.lineEdit_2.setText(str(datas['age']))
            self.ui.lineEdit_3.setText(datas['education'])
            self.ui.lineEdit_4.setText(datas['major'])
            self.ui.lineEdit_5.setText(datas['school'])
            print(datas['experience'])
            self.ui.textEdit.append(datas['experience'])
            print("a")
            if datas['sex'] == 'm':
                print("b")
                self.ui.radioButton.setChecked(True)
                print("c")
            else:
                print("d")
                self.ui.radioButton_2.setChecked(True)
                print("e")

    def addresume(self):
        name = self.ui.lineEdit.text()
        age = int(self.ui.lineEdit_2.text())
        print('age', age)
        education = self.ui.lineEdit_3.text()
        print(1)
        major = self.ui.lineEdit_4.text()
        print(2)
        school = self.ui.lineEdit_5.text()
        print(3)
        experience = self.ui.textEdit.toPlainText()
        print(4)
        if self.ui.radioButton.isChecked():
            print(5)
            sex = 'm'
        elif self.ui.radioButton_2.isChecked():
            print(6)
            sex = 'f'
        else:
            print(7)
            sex = ''
        print("输入信息为{},{},{},{},{},{},{},{}".format(name, age, education, major, school, experience, sex, self.userid))
        if name == '' or age == '' or education == '' or major == '' or school == '' or experience == '' or sex == '':
            print('waring')
            QMessageBox.warning(self, 'ERROR', '信息不完整')
        else:
            print('send')
            if self.mode:  # 更新简历
                sql = "UPDATE personalResume SET name=\'{}\', age={}, education=\'{}\', major=\'{}\', school=\'{}\', experience=\'{}\', sex=\'{}\' WHERE id=\'{}\';".format(name, age, education, major, school, experience, sex, self.userid)
            else:
                sql = "INSERT INTO personalResume VALUES ( '{}\',\'{}\',\'{}\',{},\'{}\',\'{}\',\'{}\',\'{}\');".format(self.userid, name, sex, age, education, major, school, experience)
            jdata = [{'request': 'getJobDetailSQL', 'sql': sql}]
            self.client.send(json.dumps(jdata).encode())
            jres = json.loads(m_recv(self.client))
            print('上传简历', jres[0]['num'])
            self.addsuccess.emit("上传简历成功!")

    def mousePressEvent(self, event):
        if event.button() == QtCore.Qt.LeftButton and self.isMaximized() == False:
            self.m_flag = True
            self.m_Position = event.globalPos() - self.pos()
            event.accept()
            self.setCursor(QtGui.QCursor(QtCore.Qt.OpenHandCursor))

    def mouseMoveEvent(self, mouse_event):
        if QtCore.Qt.LeftButton and self.m_flag:
            self.move(mouse_event.globalPos() - self.m_Position)
            mouse_event.accept()

    def mouseReleaseEvent(self, mouse_event):
        self.m_flag = False
        self.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))

if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = addjianli()
    sys.exit(app.exec_())

# pyqdetail.py 查看招聘信息详情
import json
import sys
import _thread

from PyQt5.QtWidgets import QMainWindow, QApplication, QMessageBox
from PyQt5.QtGui import QStandardItemModel, QStandardItem, QCursor, QFont, QPainter

from TCPmodule import m_recv
from detail import *  # 显示招聘信息详情的小窗口图形界面代码
from PyQt5 import QtCore

class pyqdetail(QMainWindow):
    def __init__(self, detail):
        super().__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.lineEdit.setText(detail['jobName'])
        self.ui.lineEdit_2.setText(detail['jobCompany'])
        self.ui.lineEdit_3.setText(detail['jobSalary'])
        self.ui.lineEdit_4.setText(detail['jobPlace'])
        self.ui.lineEdit_5.setText(detail['jobEducation'])
        self.ui.lineEdit_6.setText(detail['jobExperience'])
        self.ui.textEdit.setText(detail['jobDescribe'])

        self.setWindowFlag(QtCore.Qt.FramelessWindowHint)
        self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
        self.show()

    def mousePressEvent(self, event):
        if event.button() == QtCore.Qt.LeftButton and self.isMaximized() == False:
            self.m_flag = True
            self.m_Position = event.globalPos() - self.pos()
            event.accept()
            self.setCursor(QtGui.QCursor(QtCore.Qt.OpenHandCursor))

    def mouseMoveEvent(self, mouse_event):
        if QtCore.Qt.LeftButton and self.m_flag:
            self.move(mouse_event.globalPos() - self.m_Position)
            mouse_event.accept()

    def mouseReleaseEvent(self, mouse_event):
        self.m_flag = False
        self.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小龙凤团茶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值